Java-カプセル化

Encapsulationは、4つの基本的なOOP概念の1つです。他の3つは、継承、ポリモーフィズム、および抽象化です。

Javaでのカプセル化は、データ(変数)とデータに作用するコード(メソッド)を1つのユニットとしてまとめるメカニズムです。カプセル化では、クラスの変数は他のクラスから隠され、現在のクラスのメソッドを介してのみアクセスできます。したがって、それはまた知られていますdata hiding

Javaでカプセル化を実現するには-

  • クラスの変数をプライベートとして宣言します。

  • 変数値を変更および表示するためのパブリックsetterおよびgetterメソッドを提供します。

以下は、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

カプセル化の利点

  • クラスのフィールドは、読み取り専用または書き込み専用にすることができます。

  • クラスは、そのフィールドに格納される内容を完全に制御できます。