java封装通过private字段+public getter/setter控制对象状态,setter校验合法性(如年龄0–150)、getter返回计算值或脱敏结果,只读字段仅提供getter,关联状态在setter中同步更新,不可变对象则用final字段+无setter+工厂方法确保状态安全。

Java 中用封装管理对象的内部状态,核心是把字段设为 private,提供受控的 public 方法(getter/setter)来读写,同时在 setter 中加入逻辑校验和状态约束,让对象自己维护一致性。
用 private 字段隐藏内部数据
不直接暴露实例变量,避免外部随意修改。比如表示年龄的字段:
private int age;这样外部代码不能写 person.age = -5;,必须走方法入口。
用 getter/setter 控制访问逻辑
不是简单“有啥返回啥”,而是嵌入业务规则:
- setter 中做合法性检查:比如年龄只能是 0–150
- getter 可返回计算值或脱敏结果:如密码字段只返回 "***"
- 某些字段只读(只提供 getter),如创建时间一旦设定就不能改
在 setter 中同步更新相关状态
对象状态常有关联性。例如一个订单类:
private BigDecimal totalAmount;private boolean isPaid;
当调用 setTotalAmount(...) 时,可以自动重置 isPaid = false;,保证“金额变了,支付状态就失效”这个语义始终成立。
用不可变对象进一步强化封装
如果对象创建后状态不该变(如 LocalDate、自定义的 Point),就:
- 所有字段 final + private
- 构造器一次性初始化
- 不提供任何 setter
- 若需“修改”,返回新对象(如 withX(int newX))
这样连内部状态被意外篡改的可能都消除了。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











