Java 中的 Getter 和 Setter
Getter 和 Setter 是 Java 中两种特殊的 方法,允许访问和修改数据成员的值。它们主要用于封装和数据隐藏,以保护我们的敏感数据免遭未经授权的访问。在封装中,我们将相关的数据和行为组合到一个类中,并隐藏实现细节以防止外部世界访问。数据隐藏是指防止从对象的内部状态直接访问类的成员。在本文中,我们将解释 Java 中的 Getter 和 Setter 方法是什么,以及它们如何在数据隐藏中发挥作用。
Getter 和 Setter 方法
需求
当我们将类成员声明为私有(private)时,它将无法被其类外部的任何代码访问,包括其子类。此功能使其比其他访问修饰符(如 public 和 protected)更安全。通过使用 Getter 和 Setter 方法,我们可以控制如何访问和修改类的私有字段。我们还可以添加验证逻辑或其他功能到 Getter 和 Setter 方法中,例如检查输入是否有效,我们可以为指定的数据成员验证正确的 数据类型,等等。
Setter 方法
这些是用于更新私有字段值的公共(public)方法。它们通常以“set”为前缀,后跟字段名称,且首字母大写。它必须具有 void 返回类型,并接受一个与它修改的字段类型相同的参数。
示例
public void setItemName( String name ) {
this.itemName = name;
}
Getter 方法
这些是用于读取私有字段值的公共(public)方法。它们通常以“get”为前缀,后跟字段名称,且首字母大写。它必须与它访问的字段具有相同的返回类型。
示例
public String getItemName() {
return name;
}
Getter 和 Setter 的 Java 程序
示例 1
以下示例说明了 Getter 和 Setter 方法的使用
方法
定义类的三个私有成员。
创建两个 void 类型的 Setter 方法。第一个 Setter 方法用于“itemName”,第二个用于“quantity”。
现在,创建相应的 Getter 方法。第一个 Getter 方法的返回类型为 String,第二个为整数。
在 main() 方法中,创建一个“Cart”类的对象,并调用 Setter 方法以及一个参数来设置商品名称。最后,调用相应的 Getter 方法。
public class Cart {
// private members
private String itemName;
private int price;
private int quantity;
// first setter method
public void setItemName( String itemName ) {
this.itemName = itemName;
}
// first getter method
public String getItemName() {
return itemName;
}
// second setter method
public void setPrice( int price ) {
this.price = price;
}
// second getter method
public int getPrice() {
return price;
}
public static void main(String[] args) {
Cart obj = new Cart(); // creating object
obj.setItemName("Butter"); // setting item name
obj.setPrice(50); // setting item quantity
System.out.println("The details we have set are: ");
System.out.println(obj.getItemName());
System.out.println(obj.getPrice());
}
}
输出
The details we have set are: Butter 50
示例 2
这是 Getter 和 Setter 方法的另一个示例,稍作修改。我们将在 Setter 方法中提供我们的逻辑,以便如果商品数量为负数,编译器将抛出错误。
public class Cart {
// private members
private String itemName;
private int price;
private int quantity;
// first setter method
public void setItemName( String itemName ) {
this.itemName = itemName;
}
// first getter method
public String getItemName() {
return itemName;
}
// second setter method
public void setQuantity( int quantity ) {
if(quantity <= 0) {
System.out.println("Invalid input!");
} else {
this.quantity = quantity;
}
}
// second getter method
public int getQuantity() {
return quantity;
}
public static void main(String[] args) {
Cart obj = new Cart(); // creating object
obj.setItemName("Butter"); // setting item name
// setting item quantity
obj.setQuantity(-2); // wrong input
obj.setQuantity(5);
System.out.println("The details we have set are: ");
System.out.println(obj.getItemName());
System.out.println(obj.getQuantity());
}
}
输出
Invalid input! The details we have set are: Butter 5
结论
我们从介绍 Getter 和 Setter 方法开始本文,在下一节中,我们详细解释了它们以及它们的需求。最后,我们通过 Java 程序讨论了它们的实际实现。
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP