カプセル化は、Java の 4 つの基本的なオブジェクト指向プログラミング概念の 1 つです。この背後にある主なアイデアは、実装の詳細をユーザーから隠すことです。言い換えれば、カプセル化はデータを 1 つの単位にまとめて、外部からのアクセスを防ぎます。データは他のクラスから隠蔽されるため、このプロセスはデータ隠蔽として知られています。例として電球の働きを考えてみましょう。たとえ使ったとしても、電球の裏側で動いているかどうかはわかりません。 ただし、Java カプセル化の場合は、修飾子を使用してデータにアクセスできます。次のセクションで詳しく見てみましょう。
Java でのカプセル化は
によって機能します。無料ソフトウェア開発コースを始めましょう
Web 開発、プログラミング言語、ソフトウェア テスト、その他
たとえば、Employee クラスを作成しています。以下に示すように、変数はプライベートとして設定する必要があります。
private String EmpName; private int EmpID; private int EmpSal;
以下は、クラス Employee のさまざまなプライベート変数の get メソッドと set メソッドです。
コード:
public int getEmpSal() { return EmpSal; }public String getEmpName() { return EmpName; } public int getEmpID() { return EmpID; } public void setEmpSal( int EmpSal) { this.EmpSal = EmpSal; } public void setEmpName(String EmpName) { this.EmpName = EmpName; } public void setEmpID( int EmpID) { this.EmpID = EmpID; }
これらのメソッドを使用すると、クラスを書き込み専用または読み取り専用にすることができます。つまり、必要に応じてこれらのメソッドをスキップできます。
カプセル化の利点の一部を以下に示します。
Java Bean クラスは、クラス内のすべてのデータ メンバーがプライベートであるため、完全にカプセル化されたクラスの一例です。
ゲッター メソッドとセッター メソッドの両方を使用したカプセル化の例を見てみましょう。そのために、2 つのクラスを作成します。1 つはプライマリ メソッドで、もう 1 つは取得メソッドと設定メソッドです。
従業員.java
コード:
//Java program for Encapsulation with both read and write public class Employee { //private variables which can be accessed by public methods of the class private String EmpName; private int EmpID; private int EmpSal; // get method to access the private integer variable EmpSal public int getEmpSal() { return EmpSal; } // get method to access the private string variable EmpName public String getEmpName() { return EmpName; } // get method to access the private integer variable EmpID public int getEmpID() { return EmpID; } // set method to access the private integer variable EmpSal public void setEmpSal( int EmpSal) { this.EmpSal = EmpSal; } // set method to access the private string variable EmpName public void setEmpName(String EmpName) { this.EmpName = EmpName; } // set method to access the private integer variable EmpID public void setEmpID( int EmpID) { this.EmpID = EmpID; } }
コード:
public class EmployeeEncaps { public static void main(String[] args) { Employee EmpObj= new Employee(); //object of the class Employee //passing the values to the methods using object EmpObj.setEmpName("Anna"); EmpObj.setEmpSal(30000); EmpObj.setEmpID(670311); // Printing values of the variables System.out.println("Employee's Name: " + EmpObj.getEmpName()); System.out.println("Employee's ID: " + EmpObj.getEmpID()); System.out.println("Employee's Salary: " + EmpObj.getEmpSal()); } }
出力:
変数がプライベートであるため、クラス Employee は上記のプログラムにカプセル化されています。実装には got メソッドと set メソッドがあるため、読み書きが可能です。 EmpName、EmpSal、EmpID などのプライベート変数は、これらのメソッドを使用してアクセスされ、オブジェクトを使用してメソッドを呼び出すことによって表示されます。
ここで、カプセル化が読み取り専用クラスでどのように機能するかを見てみましょう。
コード:
//Java program for Encapsulation with read permission public class Employee { //private variables which can be accessed by public methods of the class private String EmpName = "Adam"; private int EmpID = 670388; private int EmpSal = 35000; // get method to access the private integer variable EmpSal public int getEmpSal() {return EmpSal; }// get method to access the private string variable EmpName public String getEmpName() { return EmpName; } // get method to access the private integer variable EmpID public int getEmpID() { return EmpID; } }
コード:
public class EmployeeEncaps { public static void main(String[] args) { Employee EmpObj= new Employee(); //object of the class Employee // Printing values of the variables System.out.println("Employee's Name: " + EmpObj.getEmpName()); System.out.println("Employee's ID: " + EmpObj.getEmpID()); System.out.println("Employee's Salary: " + EmpObj.getEmpSal()); } }
出力:
最初の例と同様に、プライベート変数も使用しています。違いは、クラス内のプライベート変数の値を設定するために set メソッドを使用していないことです。代わりに、変数に値を直接割り当てます。
ここで、書き込み専用クラスに進みます。
コード:
//Java program for Encapsulation with write permission public class Employee { //private variables which can be accessed by public methods of the class private String EmpName; private int EmpID; private int EmpSal; // set method to access the private integer variable EmpSal public void setEmpSal( int EmpSal) { this.EmpSal = EmpSal; //for sample output System.out.println("Employee's Salary: " + EmpSal); } // set method to access the private string variable EmpName public void setEmpName(String EmpName) { this.EmpName = EmpName; //for sample output System.out.println("Employee's Name: " + EmpName); }// set method to access the private integer variable EmpID public void setEmpID( int EmpID) { this.EmpID = EmpID; //for sample output System.out.println("Employee's ID: " + EmpID); } }
コード:
public class EmployeeEncaps { public static void main(String[] args) { Employee EmpObj= new Employee(); //object of the class Employee //passing the values to the methods using object EmpObj.setEmpName("Iza"); EmpObj.setEmpID(670472); EmpObj.setEmpSal(48000); } }
出力:
上記の例では、書き込み専用クラスを実現するために get メソッドを使用していません。つまり、ここでは変数を変更したり取得したりすることはできません。値を取得することができないため、set メソッド内で print を使用してサンプル出力を行います。
カプセル化は、データをラップして実装の詳細をすべて隠す OOP の概念です。これは、プライベート変数と、変数にアクセスするための取得や設定などのメソッドを使用することで実現できます。カプセル化の主な利点には、柔軟性、データの隠蔽、テストの容易さ、再利用性が含まれます。
以上がJava でのカプセル化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。