Java でのカプセル化

王林
リリース: 2024-08-30 15:59:54
オリジナル
1015 人が閲覧しました

カプセル化は、Java の 4 つの基本的なオブジェクト指向プログラミング概念の 1 つです。この背後にある主なアイデアは、実装の詳細をユーザーから隠すことです。言い換えれば、カプセル化はデータを 1 つの単位にまとめて、外部からのアクセスを防ぎます。データは他のクラスから隠蔽されるため、このプロセスはデータ隠蔽として知られています。例として電球の働きを考えてみましょう。たとえ使ったとしても、電球の裏側で動いているかどうかはわかりません。  ただし、Java カプセル化の場合は、修飾子を使用してデータにアクセスできます。次のセクションで詳しく見てみましょう。

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 でのカプセル化の利点

カプセル化の利点の一部を以下に示します。

  • アプリケーションのシンプルさ
  • 要件に基づいてコードを再利用または変更する機能
  • データへのアクセスを制限します
  • コードがカプセル化されているため単体テストが容易

Java Bean クラスは、クラス内のすべてのデータ メンバーがプライベートであるため、完全にカプセル化されたクラスの一例です。

Java カプセル化の例

ゲッター メソッドとセッター メソッドの両方を使用したカプセル化の例を見てみましょう。そのために、2 つのクラスを作成します。1 つはプライマリ メソッドで、もう 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;
}
}
ログイン後にコピー
  • EmployeeEncaps.java

コード:

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());
}
}
ログイン後にコピー

出力:

Java でのカプセル化

変数がプライベートであるため、クラス Employee は上記のプログラムにカプセル化されています。実装には got メソッドと set メソッドがあるため、読み書きが可能です。 EmpName、EmpSal、EmpID などのプライベート変数は、これらのメソッドを使用してアクセスされ、オブジェクトを使用してメソッドを呼び出すことによって表示されます。

ここで、カプセル化が読み取り専用クラスでどのように機能するかを見てみましょう。

例 #2

  • 従業員.java

コード:

//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;
}
}
ログイン後にコピー
  • EmployeeEncaps.java

コード:

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());
}
}
ログイン後にコピー

出力:

Java でのカプセル化

最初の例と同様に、プライベート変数も使用しています。違いは、クラス内のプライベート変数の値を設定するために set メソッドを使用していないことです。代わりに、変数に値を直接割り当てます。

ここで、書き込み専用クラスに進みます。

例 #3

  • 従業員.java

コード:

//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);
}
}
ログイン後にコピー
  • EmployeeEncaps.java

コード:

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);
}
}
ログイン後にコピー

出力:

Java でのカプセル化

上記の例では、書き込み専用クラスを実現するために get メソッドを使用していません。つまり、ここでは変数を変更したり取得したりすることはできません。値を取得することができないため、set メソッド内で print を使用してサンプル出力を行います。

結論

カプセル化は、データをラップして実装の詳細をすべて隠す OOP の概念です。これは、プライベート変数と、変数にアクセスするための取得や設定などのメソッドを使用することで実現できます。カプセル化の主な利点には、柔軟性、データの隠蔽、テストの容易さ、再利用性が含まれます。

以上がJava でのカプセル化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート