在Java里实现对象属性私有化与访问控制,核心思路是把类的字段用private修饰,再通过公共方法暴露有限的读写能力。这样外部代码不能直接改内部数据,类自己能校验和约束,保证对象始终处于合理状态。

一、为什么需要属性私有化
如果把字段声明为public,任何代码都能读取和修改,例如用户年龄被设为负数也不会报错。使用私有化配合方法控制,就能在赋值前做检查。
1. 暴露公有字段的问题
- 数据容易被意外篡改
- 无法加入校验逻辑
- 后期修改字段类型会影响所有调用方
二、用private实现私有化
在类中用private修饰字段,使它们仅对本类可见。然后提供getter和setter方法作为受控通道。
public class User {
// 私有属性,外部不能直接访问
private String name;
private int age;
// 读方法
public String getName() {
return name;
}
// 写方法,带校验逻辑
public void setAge(int age) {
if (age < 0 || age > 150) {
throw new IllegalArgumentException("年龄不合法");
}
this.age = age;
}
public int getAge() {
return age;
}
}
2. 控制访问粒度
并非所有属性都要提供setter。只读数据可只给getter,内部计算值也可不存字段而直接返回。
三、其他访问控制符配合
除private外,还有default、protected、public。包内工具方法可用default,子类扩展用protected,对外API用public。
| 修饰符 | 同类 | 同包 | 子类 | 任意 |
|---|---|---|---|---|
| private | 是 | 否 | 否 | 否 |
| protected | 是 | 是 | 是 | 否 |
| public | 是 | 是 | 是 | 是 |
四、封装技巧总结
用private隐藏字段,用方法暴露行为;setter中做参数校验;不变对象可去掉setter。这样就是标准的OOP属性封装。
封装不是简单加private,而是把“数据+约束”绑定在一起,让对象对自己负责。
Javaprivateencapsulation修改时间:2026-07-31 08:36:18