Skip to content

Getter 和 Setter

概述

Getter 和 Setter 是封装的具体实现方式。

基本概念

命名规范

属性GetterSetter
namegetName()setName()
isActiveisActive()setActive()
agegetAge()setAge()

代码示例

基本使用

java
public class GetterSetterDemo {

    static class User {
        private String name;
        private boolean active;

        public String getName() {
            return name;
        }

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

        // boolean 用 is 开头命名 getter
        public boolean isActive() {
            return active;
        }

        public void setActive(boolean active) {
            this.active = active;
        }
    }

    public static void main(String[] args) {
        User user = new User();
        user.setName("张三");
        user.setActive(true);

        System.out.println("Name: " + user.getName());
        System.out.println("Active: " + user.isActive());
    }
}

带验证的 Setter

java
public class ValidationSetterDemo {

    static class Account {
        private double balance;

        public double getBalance() {
            return balance;
        }

        public void setBalance(double balance) {
            if (balance >= 0) {
                this.balance = balance;
            } else {
                throw new IllegalArgumentException("Balance cannot be negative");
            }
        }

        public void deposit(double amount) {
            if (amount > 0) {
                balance += amount;
            }
        }

        public boolean withdraw(double amount) {
            if (amount > 0 && amount <= balance) {
                balance -= amount;
                return true;
            }
            return false;
        }
    }

    public static void main(String[] args) {
        Account account = new Account();
        account.setBalance(1000);
        account.deposit(500);
        account.withdraw(200);
        System.out.println("Balance: " + account.getBalance());
    }
}

注意事项

  1. IDE 生成:大多数 IDE 可自动生成
  2. Lombok:@Getter @Setter 注解
  3. 布尔属性:用 is 开头命名 getter

基于 VitePress 构建