この概念に入る前に、Java のクラスとカプセル化について知っておく必要があります。
Java でのカプセル化
カプセル化は、その名前が示すように、データとメソッドを 1 つのユニットとして囲むプロセスです。オブジェクト指向プログラミングでは、クラスのデータ メンバーをプライベートにして、データ メンバーへの直接アクセスを制限します。したがって、カプセル化されたデータ メンバーは、適切に定義された方法がなければ取得または変更できません。このために、Java でアクセサー メソッドとミューテーター メソッドを定義します。これらの方法を詳しく見てみましょう。Java のアクセサーとミューテーターとは何ですか?
アクセサ
アクセサー メソッドの名前は「 access 」という単語によって決まり、これによりユーザーはクラス内のプライベート情報にアクセスできるようになります。「 get」メソッドまたは「getters 」について聞いたことがあるなら、それはアクセサーと同じものです。ゲッターは、クラスのスコープ外でアクセスするプライベート変数と定数を取得します。構文
Java アクセサーにはキーワード「get 」を使用します。変数「name」にアクセスするには、次のゲッターgetName()を使用できます。アクセサ メソッドの例については、以下をご覧ください。
public class Student {
private String name;
public String getName() {
return name;
}
}
各ゲッターにはメソッド シグネチャ内の変数名の前にキーワード「get」があり、戻り値の型は返される変数の型と同じであることに注意してください。変数「name」は「String」型であるため、ゲッター/アクセサー メソッドも「String」を返します。
ミューテーター
Java のミューテーター メソッドは、文字通り「変更する」を意味する「mutate」という単語によって駆動されます。ミューテーターを使用すると、ユーザーはクラス オブジェクトのプライベート変数の値を設定/変更できます。オブジェクト指向プログラミングのコンテキストでは、「set」メソッドまたは「setters」はミューテーターとしても知られています。プライベート データ メンバーは直接変更できないため、セッターを使用するとカプセル化が容易になります。したがって、セッター メソッド/ミューテーターは、クラス スコープの外で変数の値を更新するために使用されます。構文
ミューテーターの場合は、「 set 」キーワードを使用します。各セッターは、キーワード「set」の後に、変更する必要がある変数の名前を続けることによって定義されます。ここでは、 String 型変数をパラメータとして受け取る セッターsetName()を使用します。
public class Student {
private String name;
public void setName(String name) {
this.name = name;
}
}
なぜアクセサとミューテーターが必要なのでしょうか?
クラス内の機密情報を保護するには、ゲッターとセッター、またはアクセサーとミューテーターが必要です。これらの標準的な方法を使用することにより、情報は不正使用から保護されます。さらに、ミューテーターに設定されたデータがプログラムのすべての要件を満たしているかどうかを検証することもできます。アクセサーとミューテーターの例
以下の Student クラスを使用して、アクセサー メソッドとミューテーター メソッドの例を見てみましょう。例
import java.util.Arrays;
public class Student {
private String name;
private Integer ID;
private String DOB;
private double GPA;
private String[] courses;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getID() {
return ID;
}
public void setID(Integer iD) {
this.ID = iD;
}
public String getDOB() {
return DOB;
}
public void setDOB(String dOB) {
this.DOB = dOB;
}
public double getGPA() {
return GPA;
}
public void setGPA(double gPA) {
this.GPA = gPA;
}
public String[] getCourses() {
return courses;
}
public void setCourses(String[] courses) {
this.courses = courses;
}
public static void main(String[] args) {
Student student1 = new Student();
System.out.println("Student Bio [ Before using Accessors & Mutators ]");
// calling accessor methods
System.out.print("Name: " + student1.getName());
System.out.print("\tID: " + student1.getID());
System.out.print("\tGPA: " + student1.getGPA());
System.out.print("\tDOB: " + student1.getDOB());
System.out.println("\tCourses: " + Arrays.toString(student1.getCourses()));
// calling mutator methods
student1.setName("Alex Coy");
student1.setID(3115);
student1.setGPA(2.79);
student1.setDOB("08/08/1998");
String[] courses = { "Object Oriented Programming", "Cryptography", "Photography", "Network Security" };
student1.setCourses(courses);
System.out.println("\nStudent Bio [ After using Mutators & Accessors ]");
// calling accessor methods
System.out.print("Name: " + student1.getName());
System.out.print("\tID: " + student1.getID());
System.out.print("\tGPA: " + student1.getGPA());
System.out.print("\tDOB: " + student1.getDOB());
System.out.println("\tCourses: " + Arrays.toString(student1.getCourses()));
}
}
出力
学生の略歴 [ アクセサとミューテーターを使用する前 ] 名前: null ID: null GPA: 0.0 DOB: null コース: null 学生の略歴 [ ミューテータとアクセサを使用した後 ] 名前: Alex Coy ID: 3115 GPA: 2.79 DOB: 08/08/1998コース: [オブジェクト指向プログラミング、暗号化、写真、ネットワーク セキュリティ]
GO TO FULL VERSION