在深入探讨这个概念之前,您需要了解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:08/08/1998课程:【面向对象程序设计、密码学、摄影、网络安全】