Getter(ゲッター)は、変数の値を取得するメソッド。
Setter(セッター)は、変数に値を代入するメソッド。
private データ型 変数名; /*Getter*/ データ型 get変数名(){ return 変数名; } /*Setter*/ void set変数名(データ型 変数名){ //処理 this.変数名 = 変数名; }
private String name;
String getName(){
return name;
}
void setName(String name){
//処理
this.name = name;
}
//Member_07.java class Member_07{ private int no; private String name; public int getNo(){ return no; } public void setNo(int no){ this.no = no; } public String getName(){ return name; } public void setName(String name){ this.name = name; } public Member_07(int no, String name){ this.no = no; this.name = name; } }
//Driver_07.java class Driver_07{ public static void main(String[] args){ Member_07 shiz = new Member_07(1, "館石静乃"); System.out.println(shiz.getName()); shiz.setName("シズちゃん"); System.out.println(shiz.getName()); } }
ws>javac -encoding UTF-8 Driver_07.java ws>java Driver_07 館石静乃 シズちゃん
Getter/Setter は、カプセル化することを前提として
アクセスメソッドを定型化します。
//Driver_07NG.java class Driver_07NG{ public static void main(String[] args){ Member_07 shiz = new Member_07(1, "館石静乃"); System.out.println(shiz.getName()); shiz.getName() = "シズちゃん"; //NG } }
ws>javac -encoding UTF-8 Driver_07NG.java Driver_07NG.java:8: エラー: 予期しない型 shiz.getName() = "シズちゃん"; ^ 期待値: 変数 検出値: 値 エラー1個
Getterの戻り値は、変数ではなく値です。 値には代入はできません。
//Member_08.java //おススメできないコードです class Member_08{ private int no; private String name; private int max_hp; private int now_hp; private boolean life = true; public int getNo(){ return no; } public void setNo(int no){ this.no = no; } public String getName(){ return name; } public void setName(String name){ this.name = name; } public int getMax_hp(){ return max_hp; } public void setMax_hp(int max_hp){ max_hp = max_hp<1 ? 1 : max_hp; now_hp = now_hp>max_hp ? max_hp : now_hp; this.max_hp = max_hp; } public int getNow_hp(){ return now_hp; } public void setNow_hp(int now_hp){ now_hp = now_hp>max_hp ? max_hp : now_hp; if(now_hp<0){ now_hp = 0; life = false; } this.now_hp = now_hp; } public boolean isLife(){ return life; } public Member_08(int no, String name, int max_hp, int now_hp){ this.no = no; this.name = name; this.max_hp = max_hp; this.now_hp = now_hp; max_hp = max_hp<1 ? 1 : max_hp; now_hp = now_hp>max_hp ? max_hp : now_hp; now_hp = now_hp<0 ? 0 : now_hp; } }
//Driver_08.java //おススメできないコードです class Driver_08{ public static void main(String[] args){ Member_08 shiz = new Member_08(1, "館石静乃", 12, 7); Member_08 maya = new Member_08(2, "桜井真夜", 11, 9); Member_08 tema = new Member_08(3, "安堂てまり", 14, 8); //-----処理------------- int hp; hp = shiz.getNow_hp(); shiz.setNow_hp(hp + 6); hp = maya.getNow_hp(); maya.setNow_hp(hp -10); hp = tema.getMax_hp(); tema.setMax_hp(hp -10); //--------------------- System.out.println(); System.out.println("NO." + shiz.getNo() + "\t" + shiz.getName()); System.out.println("MAX_HP:\t" + shiz.getMax_hp()); System.out.println("NOW_HP:\t" + shiz.getNow_hp()); System.out.println("LIFE:\t" + shiz.isLife()); System.out.println("------------------"); System.out.println(); System.out.println("NO." + maya.getNo() + "\t" + maya.getName()); System.out.println("MAX_HP:\t" + maya.getMax_hp()); System.out.println("NOW_HP:\t" + maya.getNow_hp()); System.out.println("LIFE:\t" + maya.isLife()); System.out.println("------------------"); System.out.println(); System.out.println("NO." + tema.getNo() + "\t" + tema.getName()); System.out.println("MAX_HP:\t" + tema.getMax_hp()); System.out.println("NOW_HP:\t" + tema.getNow_hp()); System.out.println("LIFE:\t" + tema.isLife()); System.out.println("------------------"); } }
ws>javac -encoding UTF-8 Driver_08.java ws>java Driver_08 NO.1 館石静乃 MAX_HP: 12 NOW_HP: 12 LIFE: true ------------------ NO.2 桜井真夜 MAX_HP: 11 NOW_HP: 0 LIFE: false ------------------ NO.3 安堂てまり MAX_HP: 4 NOW_HP: 4 LIFE: true ------------------
//Member_09.java class Member_09{ public final int no; private String name; private int max_hp; private int now_hp; private boolean life=true; public String getName(){ return name; } public void setName(String name){ this.name = name; } /*レベルアップ*/ public void addMax_hp(int point); { max_hp += point; hpCheck(); } /*回復 ダメージ*/ public void addNow_hp(int point);{ now_hp += point; hpCheck(); } /*HPの整合確認 private*/ private void hpCheck(){ max_hp = max_hp<1 ? 1 : max_hp; now_hp = now_hp>max_hp ? max_hp : now_hp; if(now_hp<0){ now_hp = 0; life = false; } } /*表示*/ public void print(){ System.out.println(); System.out.println("NO." + no + "\t" + name); System.out.println("MAX_HP:\t" + max_hp); System.out.println("NOW_HP:\t" + now_hp); System.out.println("LIFE:\t" + life); System.out.println("------------------"); } /*コンストラクタで初期化*/ public Member_09(int no, String name, int max_hp, int now_hp){ this.no = no; this.name = name; this.max_hp = max_hp; this.now_hp = now_hp; hpCheck(); } }
//Driver_09.java class Driver_09{ public static void main(String[] args){ Member_09 shiz = new Member_09(1, "館石静乃", 12, 7); Member_09 maya = new Member_09(2, "桜井真夜", 11, 9); Member_09 tema = new Member_09(3, "安堂てまり", 14, 8); //-----処理------------- shiz.addNow_hp(6); maya.addNow_hp(-10); tema.addMax_hp(-10); //--------------------- shiz.print(); maya.print(); tema.print(); } }
ws>javac -encoding UTF-8 Driver_09.java ws>java Driver_09 NO.1 館石静乃 MAX_HP: 12 NOW_HP: 12 LIFE: true ------------------ NO.2 桜井真夜 MAX_HP: 11 NOW_HP: 0 LIFE: false ------------------ NO.3 安堂てまり MAX_HP: 4 NOW_HP: 4 LIFE: true ------------------