package hpscript.myapp;
import hpscript.myapp.model.User;
import hpscript.myapp.model.AdminUser;
public class MyApp {
public static void main(String[] args){
User tom;
tom = new User("john");
System.out.println(tom.name);
tom.sayHi();
AdminUser bob = new AdminUser("bob");
System.out.println(bob.name);
bob.sayHello();
}
}
$ javac hpscript/myapp/MyApp.java
$ java hpscript.myapp.MyApp
getter, setter
class User {
private String name;
private int score;
public User(String name, int score){
this.name = name;
this.score = score;
}
public int getScore(){
return this.score;
}
public void setScore(int score){
if (score > 0){
this.score = score;
}
}
}
public class MyApp {
public static void main(String[] args){
User tom = new User("tom", 65);
tom.setScore(85);
tom.setScore(-22);
System.out.println(tom.getScore());
}
}
static
class User {
private String name;
private static int count = 0;
public User(String name){
this.name = name;
User.count++;
}
public static void getInfo(){
System.out.println("# of instances: " + User.count);
}
}
public class MyApp {
public static void main(String[] args){
User.getInfo();
User tom = new User("tom");
User.getInfo();
User bob = new User("bob");
User.getInfo();
}
}
initializer
class User {
private String name;
private static int count;
static {
User.count = 0;
System.out.println("Static initializer");
}
{
System.out.println("instance initializer");
}
public User(String name){
this.name = name;
User.count++;
System.out.println("Constructor");
}
public static void getInfo(){
System.out.println("# of instances: " + User.count);
}
}
public class MyApp {
public static void main(String[] args){
User.getInfo();
User tom = new User("tom");
User.getInfo();
User bob = new User("bob");
User.getInfo();
}
}
final
class User {
protected String name;
private static final double VERSION = 1.1;
User(String name){
this.name = name;
User.VERSION = 1.2;
}
void sayHi(){
System.out.println("Hi!" + this.name);
}
}
class AdminUser extends User{
AdminUser(String name){
super(name);
}
void sayHi(){
System.out.println("[admin] Hi!" + this.name);
}
}
public class MyApp {
public static void main(String[] args){
User tom = new User("tom");
User.sayHi();
AdminUser bob = new AdminUser("bob");
AdminUser.sayHi();
}
}
abstract
abstract class User {
public abstract void sayHi();
}
class JapaneseUser extends User {
@Override
public void sayHi(){
System.out.println("こんにちは!");
}
}
class AmericanUser extends User {
@Override
public void sayHi(){
System.out.println("Hi");
}
}
public class MyApp {
public static void main(String[] args){
AmericanUser tom = new AmericanUser();
JapaneseUser aki = new JapaneseUser();
tom.sayHi();
aki.sayHi();
}
}
interface
interface Printable {
// 定数
// 抽象メソッド default, static
double VERSION = 1.2;
void print();
public default void getInfo(){
System.out.println("I/F ver. " + Printable.VERSION);
}
}
class User implements Printable{
@Override
public void print(){
System.out.println("Now printing user profile...");
}
}
public class MyApp {
public static void main(String[] args){
User tom = new User();
tom.print();
tom.getInfo();
}
}
列挙型
enum Result {
SUCCESS,
ERROR,
}
public class MyApp {
public static void main(String[] args){
Result res;
res = Result.ERROR;
switch (res){
case SUCCESS:
System.out.println("OK!");
System.out.println(res.ordinal());
break;
case ERROR:
System.out.println("NG!");
System.out.println(res.ordinal());
break;
}
}
}