カプセル化とは、従来別々に扱われていたデータとメソッドを、1つのクラスにまとめてしまうことです。また、公開する情報を制限することができ、詳細を隠して必要なメソッドだけを公開することができます。
このカプセル化を行うことで、変更に強いクラスとなります。
「機密」データをユーザーから見えないようにするために、以下のことをします。
class Human {
private String name; // private = 制限アクセス
// Getter
public String getName() {
return name;
}
// Setter
public void setName(String newName) {
this.name = newName;
}
}
4~6行目がゲッター、8~10行目がセッター。
説明:
public class MyClass {
public static void main(String[] args) {
Human myObj = new Human();
myObj.name = "山田";
System.out.println(myObj.name);
}
}
実行結果問題 [JEx10_1.java]
以下のプログラムは、二つの整数の足し算と引き算を行うクラス、Calculationクラスを用いて、二つの数の足し算と引き算の結果を出力したものである。
private修飾子で隠して、クラスCalculationを構成するCalculator.javaを完成させ、プログラムを完成させなさい。
package Jsample;
public class JEx10_1{
public static void main(String args[]){
Calculator cal = new Calculator();
cal.setNumber1(8); // 一つ目の数をセット
cal.setNumber2(9); // 二つ目の数をセット
// 二つの数の和を表示
System.out.println(cal.getNumber1() + " + " + cal.getNumber2() + " = " + cal.add());
// 二つの数の差を表示
System.out.println( cal.getNumber1() + " - " + cal.getNumber2() + " = " + cal.sub());
}
}
実行結果