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(){ //getter
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); // instance
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();
}
}
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 initializer");
}
public static void getInfo(){
System.out.println("# of instances: " + User.count);
}
}
変更できないfinal修飾子
// final 変更できない
final class User {
protected String name;
private static final double VERSION = 1.1;
public User(String name){
this.name = name;
User.VERSION = 1.2;
}
public final void sayHi(){
System.out.println("hi! " + this.name);
}
}
class AdminUser extends User {
public AdminUser(String name){
super(name);
}
@override
public void sayHi(){
System.out.println("[Admin]hi!" + this.name);
}
}
public class MyApp{
public static void main(String[] args){
User tom = new User("tom");
}
}
抽象クラス
//抽象クラス -> 具象クラス
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
interface Printable {
//定数、
double VERSION = 1.2;
//抽象
void print();
// default method
public default void getInfo(){
System.out.println("I/F ver. " + Printable.VERSION);
}
// static
}
class User implements Printable {
@Override
public void print(){
System.out.println("Now printing user prifile...");
}
}
public class MyApp{
public static void main(String[] args){
User tom = new User();
tom.print();
tom.getInfo();
}
}
列挙型とordinal()
// 列挙型
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;
}
}
}