在深入探討這個概念之前,您需要了解Java 中的類和封裝。
Java封裝
顧名思義,封裝是將數據和方法封裝為一個單元的過程。在面向對象編程中,類的數據成員被設為私有以限制對它們的直接訪問。因此,如果沒有正確定義的方式,則無法檢索或修改封裝的數據成員。為此,我們在 Java 中定義了 accessor 和 mutator 方法。讓我們詳細看看這些方法。Java 中的訪問器和修改器是什麼?
配件
訪問器方法的名稱由單詞“ access ”驅動,它允許用戶訪問類中的私有信息。如果您聽說過“ get ”方法或“ getters ”,它與訪問器是一回事。getter 檢索私有變量和常量以在類的範圍之外訪問。句法
我們對 Java 訪問器使用關鍵字“ get ”。要訪問變量“ name ”,我們可以使用以下 getter getName()。對於訪問器方法的示例,請查看以下內容。public class Student {
private String name;
public String getName() {
return name;
}
}
請注意,每個 getter 在方法簽名中的變量名前都有關鍵字“ get ”,返回類型與要返回的變量的類型相同。由於變量“ name ”是“ String ”類型,因此 getter/accessor 方法也返回一個“ String ”。
突變體
Java 中的 mutator 方法由單詞“mutate”驅動,字面意思是修改。修改器允許用戶設置/修改類對象的私有變量的值。在面向對象的編程上下文中,“ set ”方法或“ setter ”也稱為更改器。Setter 便於封裝,因為不能直接修改私有數據成員。因此 setter 方法/修改器用於更新類範圍之外的變量值。句法
對於修改器,我們使用“ set ”關鍵字。每個設置器都由關鍵字“set”定義,後跟需要改變的變量的名稱。在這裡,我們使用 setter setName(),它接受一個 String 類型的變量作為參數。public class Student {
private String name;
public void setName(String name) {
this.name = name;
}
}
為什麼我們需要訪問器和修改器?
我們需要 getter 和 setter 或訪問器和修改器來保護類中的敏感信息。使用這些標準方法可以防止信息被非法使用。此外,如果增變器中的數據集滿足程序的所有要求,也可以對其進行驗證。訪問器和修改器示例
通過使用下面的學生類,讓我們看一下訪問器和修改器方法的示例。例子
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:1998 年 8 月 8 日課程:【面向對象程序設計、密碼學、攝影、網絡安全】
GO TO FULL VERSION