隐藏内部细节,通过公共接口访问数据
Java 通过访问修饰符控制类、方法和变量的可见性,这是实现封装的基础。
| 修饰符 | 同类 | 同包 | 子类 | 其他 |
|---|---|---|---|---|
public | ✅ | ✅ | ✅ | ✅ |
protected | ✅ | ✅ | ✅ | ❌ |
| 默认(不写) | ✅ | ✅ | ❌ | ❌ |
private | ✅ | ❌ | ❌ | ❌ |
将属性设为 private,通过公共的 getter/setter 方法来访问,可以在方法中添加数据校验逻辑。
public class Person {
// 私有属性,外部无法直接访问
private String name;
private int age;
// 构造方法
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// Getter 方法 - 获取属性值
public String getName() {
return name;
}
// Setter 方法 - 设置属性值
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
// 在 Setter 中进行数据校验
public void setAge(int age) {
if (age >= 0 && age <= 150) {
this.age = age;
} else {
System.out.println("年龄输入无效!");
}
}
}
1. 隐藏实现细节,降低复杂度
2. 可以对数据进行校验,保证数据安全
3. 便于修改内部实现,不影响外部调用
public void setAge(int age) {
if (age >= 0 && age <= 150) {
this.age = age;
} else {
System.out.println("年龄无效!");
}
}