Java Getter和Setter的区别
Getter和Setter是Java中的两种特殊方法,允许访问和修改数据成员的值。它们主要用于封装和数据隐藏,以保护我们的敏感数据免受未经授权的访问。封装中,我们将相关的数据和行为组合在一个类中,并隐藏对外部世界的实现细节。数据隐藏意味着防止直接从对象的内部状态访问类的成员。在本文中,我们将解释Java中的getter和setter方法是什么以及它们在数据隐藏中的作用。
Getter和Setter方法
需要
当我们将一个类成员声明为私有时,它对外部代码,包括其子类,都不可访问。这个特性使得它比其他访问修饰符如public和protected更安全。通过使用getter和setter方法,我们可以控制如何访问和修改类的私有字段。我们还可以在getter和setter方法中添加验证逻辑或其他功能,比如检查输入是否有效,验证指定数据成员的正确数据类型等。
Setter方法
这些是用于更新私有字段值的公共方法。它们通常以字段名称的首字母大写的形式加上前缀”set”命名。它必须具有void返回类型,并接受与修改的字段类型相同的一个参数。
实例
public void setItemName( String name ) {
this.itemName = name;
}
获取方法
这些是用于读取私有字段值的公共方法。它们通常以字段名的首字母大写的形式加上前缀’get’。它必须与所访问字段具有相同的返回类型。
实例
public String getItemName() {
return name;
}
Java程序的Getter和Setter
示例1
下面的示例演示了getter和setter方法的使用
方法
- 定义一个类的三个私有成员。
-
创建两个void类型的setter方法。第一个setter方法用于’itemName’,第二个用于’quantity’。
-
创建相应的getter方法。第一个getter方法的返回类型为String,第二个为integer。
-
在main()方法中,创建一个’Cart’类的对象,并调用设置方法,同时传入参数设置项目名称。最后,调用相应的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程序讨论了它们的实际实现。