封装通过private限制字段访问并强制走校验方法来防止越权修改:编译器拦截跨类读写,仅开放含业务规则的公共方法,杜绝误用与依赖,配合private final和不可变视图彻底封死篡改。

封装通过限制访问权限 + 控制访问入口来防止外部越权修改内部状态,不是靠信任,而是靠机制强制拦截。
用 private 筑起第一道物理隔离墙
把字段声明为 private,Java 编译器和运行时会直接拒绝跨类的读写操作:
- 哪怕只是想“看一眼”,比如
account.balance,编译就报错 - 更别说赋值操作,如
account.balance = -1000,根本通不过语法检查 - 这相当于撤掉了外部代码的“操作权”,连门把手都不存在,自然无法越权
只开放带校验逻辑的公共方法作为唯一通道
所有允许的修改必须走类自己定义的方法,比如 withdraw(double amount),并在其中嵌入业务规则:
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
- 检查金额是否为负、是否超过余额、是否触发风控阈值
- 拒绝非法请求,不抛异常也可静默忽略,或记录审计日志
- 下游调用者无法绕过这些判断——它只能调这个方法,不能碰字段本身
防的不只是“恶意”,更是“越权依赖”和“误用”
越权访问常来自非攻击场景:
立即学习“Java免费学习笔记(深入)”;
- 同事在工具类中用反射强行修改私有字段(需显式开启权限,可被安全管理器拦截)
- 其他模块把某个字段当成公开契约,硬编码依赖其存在和可写性
- 一旦你后续加校验或改实现,它就崩溃——而封装后它只能走你提供的接口,兼容性由你掌控
配合不可变设计,彻底封死篡改路径
对关键状态进一步加固:
- 字段声明为
private final List<String> tags; - getter 返回只读视图:
return Collections.unmodifiableList(tags); - 外部拿到的是快照,调
add()或clear()会直接抛UnsupportedOperationException

















