今回は、
【カプセル化について】の復習d の
「Student2」「Teacher2」「School2」のコンパイルとプログラムの実行がうまくいくように、
セッターメソッド(アクセサメソッド)を利用して、
「private」でカプセル化したフィールドを間接的に利用できるようにしました。
- ソースの変更→コンパイル→プログラムの実行
- 「Student2」のソースの変更
-
01 : public class Student2 {10行目〜20行目のセッターメソッド「setAge」を用意しました。
02 : private String name_ ; /* 名前 */
03 : private int age_ ; /* 年齢 */
04 :
05 : public Student2(String name, int age){
06 : name_ = name;
07 : age_ = age;
08 : }
09 :
10 : public void setAge(int newAge){
11 : age_ = newAge;
12 : }
13 :
14 : public void studentdate(){
15 : System.out.println(name_+ "("+age_+"歳)");
16 : }
17 : }
「age_」の値を変更するときはメソッド「setAge」を利用します。
- 「Teacher2」のソースの変更
-
01 : public class Teacher2 {13行目「s1.age_ = 41」だったのを「s1.setAge(41)」にしました。
02 : private String name_ ; /* 名前 */
03 :
04 : public Teacher2(String name){
05 : name_ = name;
06 : }
07 :
08 : public void studentdateCheck(Student2 s1,Student2 s2,Student2 s3){
09 : System.out.println(this.name_+"先生のクラスの生徒の名前と年齢");
10 : s1.studentdate();
11 : s2.studentdate();
12 : s3.studentdate();
13 : s1.setAge(41);
14 : s1.studentdate();
15 : }
16 : }
直接「age_」の値を変更するのではなく、「setAge」を利用して値を変更しています。
- コンパイル
- 「Student2」「Teacher2」どちらも問題なくコンパイルできました。
- 実行
- 「School2」を実行すると以下のようになりました。
野村先生の生徒の名前と年齢山崎の年齢が40歳から41歳に変更できました。
山崎(40歳)
田中(20歳)
岩隈(27歳)
山崎(41歳)