Java封装通过private隐藏字段、getter/setter嵌入校验逻辑实现数据安全防护,配合final和不可变集合加固约束。

Java 封装通过“限制直接访问 + 受控操作”来实现数据安全防护,核心不是完全禁止访问,而是把修改权收归类内部,让每一次读写都经过逻辑校验和状态约束。
用 private 隐藏关键字段
将敏感或需约束的属性声明为 private,外部代码无法绕过规则直接赋值。比如密码、余额、年龄等字段一旦设为 private,连同包内的其他类也无法直接读写。
- 不合法写法:
account.password = "123"→ 编译报错 - 正确路径:必须调用
setPassword("123")方法,由方法内部决定是否接受
在 setter 中嵌入业务校验逻辑
setter 不只是赋值通道,更是数据守门员。它能拦截非法输入,保障对象始终处于有效状态。
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
- 年龄不能为负数或超 150:
if (age 150) throw new IllegalArgumentException("年龄无效"); - 密码必须含大小写字母+数字且长度≥8:
if (!isValidPassword(newPwd)) { ... } - 余额变动前检查账户是否冻结:
if (this.status == FROZEN) throw new AccountLockedException();
getter 也可做信息脱敏或状态过滤
getter 同样不是简单返回原始值,可根据场景返回掩码、加密结果或仅当条件满足时才允许读取。
立即学习“Java免费学习笔记(深入)”;
- 密码字段的 getter 返回
"***"而非明文 - 管理员才能查看完整订单金额,普通用户只看到
"¥****" - 未登录用户调用
getBalance()返回 0 或抛出NotLoggedInException
配合不可变对象与 final 机制加固防护
对初始化后不应改变的数据(如身份证号、创建时间),可结合 final 和构造器一次性赋值,从语言层面杜绝后续篡改可能。
-
private final String idCard;→ 构造时传入,之后任何 setter 都无法修改 - 搭配私有构造器 + 静态工厂方法,进一步控制对象生成路径
- 返回集合时用
Collections.unmodifiableList()防止外部修改内部列表

















