Java-encapsulation
提供:Dev Guides
Java-カプセル化
- カプセル化*は、4つの基本的なOOP概念の1つです。 他の3つは、継承、ポリモーフィズム、および抽象化です。
Javaでのカプセル化は、データ(変数)とデータに作用するコード(メソッド)を1つのユニットとしてラップするメカニズムです。 カプセル化では、クラスの変数は他のクラスから隠され、現在のクラスのメソッドを介してのみアクセスできます。 したがって、「データ隠蔽」とも呼ばれます。
Javaでカプセル化を達成するには-
- クラスの変数をプライベートとして宣言します。
- 変数値を変更および表示するためのパブリックセッターおよびゲッターメソッドを提供します。
例
以下は、Javaでのカプセル化を実現する方法を示す例です-
/*File name : EncapTest.java*/
public class EncapTest {
private String name;
private String idNum;
private int age;
public int getAge() {
return age;
}
public String getName() {
return name;
}
public String getIdNum() {
return idNum;
}
public void setAge( int newAge) {
age = newAge;
}
public void setName(String newName) {
name = newName;
}
public void setIdNum( String newId) {
idNum = newId;
}
}
パブリックのsetXXX()およびgetXXX()メソッドは、EncapTestクラスのインスタンス変数のアクセスポイントです。 通常、これらのメソッドはゲッターおよびセッターと呼ばれます。 したがって、変数にアクセスするクラスは、これらのゲッターとセッターを介して変数にアクセスする必要があります。
EncapTestクラスの変数は、次のプログラムを使用してアクセスできます-
/*File name : RunEncap.java*/
public class RunEncap {
public static void main(String args[]) {
EncapTest encap = new EncapTest();
encap.setName("James");
encap.setAge(20);
encap.setIdNum("12343ms");
System.out.print("Name : " + encap.getName() + " Age : " + encap.getAge());
}
}
これは、次の結果を生成します-
出力
Name : James Age : 20
カプセル化の利点
- クラスのフィールドは、読み取り専用または書き込み専用にすることができます。
- クラスは、フィールドに格納されるものを完全に制御できます。