Getter 和 Setter
概述
Getter 和 Setter 是封装的具体实现方式。
基本概念
命名规范
| 属性 | Getter | Setter |
|---|---|---|
| name | getName() | setName() |
| isActive | isActive() | setActive() |
| age | getAge() | 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());
}
}注意事项
- IDE 生成:大多数 IDE 可自动生成
- Lombok:@Getter @Setter 注解
- 布尔属性:用 is 开头命名 getter
