第10章 カプセル化

この章では、カプセル化に関する基本的な考え方について説明します。

HOMEPAGE

カプセル化


カプセル化とは、従来別々に扱われていたデータとメソッドを、1つのクラスにまとめてしまうことです。また、公開する情報を制限することができ、詳細を隠して必要なメソッドだけを公開することができます。
このカプセル化を行うことで、変更に強いクラスとなります。

「機密」データをユーザーから見えないようにするために、以下のことをします。

publicのgetterメソッドとsetterメソッドを経由すれば、それらにアクセスすることは可能です。
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行目がセッター。 説明: 上のname変数はprivateとして宣言されているので、このクラスの外側からアクセスすることはできません。 代わりに、変数にアクセスして更新するためにgetName()and setName()メソッドを使用します。

例:
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());
    }
 
}
実行結果
8 + 9 = 17
8 - 9 = -1

戻る