カプセル化とは、従来別々に扱われていたデータとメソッドを、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()); } }実行結果