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

カプセル化の利点

  • クラスのフィールドは、読み取り専用または書き込み専用にすることができます。
  • クラスは、フィールドに格納されるものを完全に制御できます。