如何在Java中使用getter和setter访问属性

将字段设为private并提供getter/setter方法,可实现封装;2. 通过setter可加入逻辑验证,如age需大于等于0。

在Java中,直接暴露类的字段给外部是不安全的,也不符合封装的原则。因此,我们通常将字段设为私有(private),并通过gettersetter方法来访问和修改属性。这种方式既能控制数据的读写,又能加入验证逻辑。

1. 定义私有字段并创建getter/setter

将类的属性声明为 private,然后提供公共的 getter 和 setter 方法。

public class Person {
    private String name;
    private int age;

    // Getter for name
    public String getName() {
        return name;
    }

    // Setter for name
    public void setName(String name) {
        this.name = name;
    }

    // Getter for age
    public int getAge() {
        return age;
    }

    // Setter for age with validation
    public void setAge(int age) {
        if (age >= 0 && age <= 150) {
            this.age = age;
        } else {
            System.out.println("Invalid age: " + age);
        }
    }
}

2. 使用getter和setter访问属性

在其他类中通过对象调用 getter 和 setter 方法来读取或修改属性值。

public class Main {
    public static void main(String[] args) {
        Person person = new Person();

        person.setName("Alice");
        person.setAge(25);

        System.out.println("Name: " + person.getName());
        System.out.println("Age: " + person.getAge());
    }
}

3. 为什么使用getter和setter?

  • 封装性:隐藏内部实现细节,防止外部随意修改数据。
  • 数据验证:在 setter 中可以加入逻辑判断,比如年龄不能为负数。
  • 灵活性:可以在不改变接口的情况下修改内部逻辑,例如延迟加载、日志记录等。
  • 兼容JavaBean规范:很多框架(如Spring、Jackson)依赖 getter/setter 进行反射操作。

4. IDE自动生成getter和setter

大多数IDE(如IntelliJ IDEA、Eclipse)支持自动生成 getter 和 setter 方法:

  • 在字段上右键 → Generate → Getter and Setter
  • 或使用快捷键(如Alt+Insert in IntelliJ)

这样可以节省时间并减少手写错误。

基本上就这些。使用 getter 和 setter 是 Java 编程中的良好习惯,尤其在设计实体类或需要控制属性访问时非常关键。