java封装通过private修饰成员变量限制直接访问,并提供public getter/setter方法控制读写逻辑,实现隐藏内部实现、暴露可控接口;private字段仅本类可访问,getter支持安全读取与附加逻辑,setter确保数据校验与一致性。

Java 中的封装通过 private 修饰符限制成员变量的直接访问,再配合公共的 getter 和 setter 方法来控制读写逻辑,从而实现“隐藏内部实现,暴露可控接口”的核心思想。
private 修饰成员变量,切断外部直接访问
用 private 声明字段后,该字段只能在本类内部被访问。外部类(包括子类)无法直接读取或修改它,避免了数据被随意篡改或设置为非法值。
- 例如:private int age; 外部不能写 obj.age = -5;
- 即使子类继承该类,也无法访问父类的 private 字段
提供 public getter 方法,安全地读取数据
通过定义 public 的 getter(如 getAge()),让调用方能以只读或受控方式获取字段值。方法体内还可加入逻辑,比如格式转换、延迟计算或权限校验。
- 示例:public int getAge() { return this.age; }
- 若 age 是敏感字段,可在 getter 中加日志、缓存判断或返回脱敏值
提供 public setter 方法,规范地修改数据
setter 方法(如 setAge(int age))是唯一允许外部修改 private 字段的入口。你可以在其中加入校验、转换、通知等逻辑,确保数据始终合法、一致。
- 示例:public void setAge(int age) { if (age >= 0 && age
- 也可在 setter 中触发事件,如更新时间戳、刷新缓存、通知监听器
封装不只是“加 private”,而是设计访问契约
private 是手段,不是目的。真正体现封装的是你如何定义哪些信息可读、哪些可写、哪些要校验、哪些需延迟加载。比如有些字段只提供 getter(只读属性),有些字段不提供任何访问方法(完全隐藏),甚至 getter/setter 可以操作多个字段或代理到其他对象。
- 一个 getName() 可能拼接 firstName 和 lastName
- 一个 setPassword(String raw) 可能自动哈希加密后再存入 private String passwordHash;
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











