在 Java 中,setter
和 getter
是用于访问和修改类的私有字段(属性)的方法。它们是面向对象编程中封装思想的一种实现方式。
在面向对象编程中,类的属性通常被声明为 private
,以限制外部直接访问这些属性。这种做法可以保护数据的完整性,避免外部代码随意修改类的内部状态。为了允许受控的访问和修改这些私有属性,我们提供了 setter
和 getter
方法。
通过这种方式,可以在 setter
中添加验证逻辑,确保传入的值符合要求;在 getter
中可以控制返回值的形式或内容。
public class Person {
// 私有属性
private String name;
private int age;
// Getter 方法
public String getName() {
return name;
}
// Setter 方法
public void setName(String name) {
this.name = name;
}
// Getter 方法
public int getAge() {
return age;
}
// Setter 方法
public void setAge(int age) {
if (age > 0) { // 添加验证逻辑
this.age = age;
} else {
System.out.println("年龄必须大于0");
}
}
}
public class Main {
public static void main(String[] args) {
// 创建对象
Person person = new Person();
// 使用 setter 设置属性值
person.setName("张三");
person.setAge(25);
// 使用 getter 获取属性值
System.out.println("姓名: " + person.getName());
System.out.println("年龄: " + person.getAge());
// 尝试设置无效的年龄
person.setAge(-5); // 输出: 年龄必须大于0
}
}
get
开头,后面跟属性名,首字母大写。例如,getName()
。
is
开头,例如 isActive()
。set
开头,后面跟属性名,首字母大写。例如,setName()
。setter
方法中添加验证逻辑,确保数据的有效性。getter
和 setter
方法,而不需要修改调用方代码。现代 IDE(如 IntelliJ IDEA、Eclipse 等)都支持自动生成 setter
和 getter
方法,省去了手动编写的时间。例如,在 IntelliJ IDEA 中,可以通过快捷键 Alt + Insert
(Windows/Linux)或 Cmd + N
(Mac)来生成这些方法。
setter
和 getter
是 Java 中实现封装的重要工具,通过它们可以安全地访问和修改类的私有属性,同时保持代码的可维护性和扩展性。