オブジェクト指向プログラミングでは、カプセル化は、オブジェクトの実装の詳細を隠し、そのプロパティと動作にアクセスするためのインターフェイスを提供する実践を指す基本的な概念です。アクセサ メソッドとミューテーター メソッドは、Java のカプセル化に関連する 2 つの重要な概念です。
アクセサ
アクセサ メソッド (ゲッター メソッドとも呼ばれます) は、オブジェクトのプライベート インスタンス変数の値を取得できるメソッドです。これらのメソッドは、オブジェクトの状態への読み取り専用アクセスを提供します。アクセサー メソッドを使用すると、オブジェクトの状態が外部コードによって誤ってまたは悪意を持って変更されないようにすることができます。
ミューテーター
ミューテーター メソッド (セッター メソッドとも呼ばれる) は、オブジェクトのプライベート インスタンス変数の値を変更できるようにするメソッドです。これらのメソッドは、オブジェクトの状態への書き込み専用アクセスを提供します。ミューテーター メソッドを使用すると、オブジェクトの状態が制御されたインターフェイスを通じてのみ変更されるようにすることができます。
Java のアクセサー メソッドとミューテーター メソッドの概念を理解するために例を見てみましょう。名前、年齢、電子メールという 3 つのプライベート インスタンス変数を持つ Person というクラスがあるとします。アクセサー メソッドとミューテーター メソッドを使用して、これらの変数へのアクセスを提供したいと考えています。
public class Person { private String name; private int age; private String email; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }
この例では、getName()、getAge()、および getEmail() という 3 つのアクセサー メソッドと、setName()、setAge()、および setEmail() という 3 つのミューテーター メソッドを定義しました。アクセサ メソッドは対応するインスタンス変数の値を返し、ミューテーター メソッドは対応するインスタンス変数の値を設定します。
命名規則
Java では、アクセサー メソッドとミューテーター メソッドの命名規則が重要です。アクセサー メソッドの名前は、「get」で始まり、その後に変数名が続き、最初の文字は大文字にする必要があります。ミューテーター メソッドの名前は、「set」で始まり、その後に変数名が続き、最初の文字を大文字にする必要があります。この命名規則により、各メソッドの動作が明確になり、コードが読みやすく保守しやすくなります。
アクセサ メソッドとミューテーター メソッドは、Java のカプセル化に不可欠な部分です。これにより、オブジェクトの状態へのアクセスを制御できるようになり、制御されたインターフェイスを通じてのみアクセスおよび変更されるようになります。アクセサー メソッドとミューテーター メソッドの命名規則に従うことで、コードをより読みやすく、保守しやすくすることができます。
Java でのアクセサー メソッドとミューテーター メソッドの使用を示すサンプル プログラムを次に示します。
人物.java
import java.util.Scanner; public class Person { private String name; private int age; private String email; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); Person person = new Person(); System.out.print('Enter name: '); String name = scanner.nextLine(); person.setName(name); System.out.print('Enter age: '); int age = scanner.nextInt(); person.setAge(age); scanner.nextLine(); // Consume the newline character left by nextInt() System.out.print('Enter email: '); String email = scanner.nextLine(); person.setEmail(email); System.out.println(' Name: ' + person.getName()); System.out.println('Age: ' + person.getAge()); System.out.println('Email: ' + person.getEmail()); } }
出力:
Name: Manoj Age: 21 Email: [email protected]
この例では、main メソッドは Person クラスの新しいインスタンスを作成し、ミューテーター メソッド (setName、setAge、および setEmail) を使用してオブジェクトのプライベート インスタンス変数の値を設定します。次に、アクセサー メソッド (getName、getAge、および getEmail) を使用してインスタンス変数の値を取得し、コンソールに表示します。
アクセサーとミューテーターを使用する利点
アクセサー メソッドとミューテーター メソッドを使用する利点は、オブジェクトの状態を取得および設定するプロセスに検証やその他の処理ロジックを追加できることです。たとえば、「setAge(int age)」メソッドに検証チェックを追加して、年齢の値が特定の範囲内にあることを確認したり、「getName()」メソッドに書式設定ロジックを追加して、年齢の最初の文字を大文字にすることができます。人の名前。