java封装的核心是构建“受控访问契约”:所有业务字段必须private,通过含校验逻辑的getter/setter控制读写,按需暴露权限,静态数据同样需封装保护。

Java 通过封装实现良好的数据隐藏,关键不是简单加个 private,而是构建一层“受控访问契约”:把字段锁住,把逻辑放进方法,让每一次读写都经过校验和干预。
用 private 封死直接访问路径
所有业务相关的成员变量必须声明为 private。这不是为了保密,而是切断外部随意赋值的通道。比如:
-
不允许:
account.balance = -1000;(非法状态瞬间产生) -
必须走方法:
account.withdraw(1000);(内部可判断余额是否充足)
哪怕字段看起来“很简单”,私有化也预留了未来加日志、审计、同步或缓存的空间。
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
getter/setter 不是摆设,要带业务逻辑
生成 getter/setter 只是起点。真正起作用的是在方法里嵌入规则:
-
setAge(int) 检查 0–150 范围,超限抛
IllegalArgumentException - setName(String) 判空、trim、限制长度,避免脏数据入库
-
getPassword() 直接返回
"****"或抛异常,绝不暴露明文 -
getList() 返回
new ArrayList(internalList),防止外部修改原集合
按需暴露,不盲目提供读写权限
不是每个字段都要配全套 getter/setter:
-
只读字段(如身份证号):只写
getIdCard(),不提供setIdCard() -
只写字段(如登录失败次数):只写
incrementFailCount(),不暴露原始值 -
计算属性(如是否成年):不设字段,
isAdult()内部算age >= 18
静态数据也要封装,用 private static + 静态方法
类级共享数据(如实例计数器、配置开关)同样需要保护:
- 声明为
private static int instanceCount; - 提供
public static int getInstanceCount()和线程安全的incrementCount() - 避免将用户状态、订单状态等业务变量设为
static,否则多个对象互相污染
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










