封装的核心是“把数据藏起来,把操作交出去”,即用private隐藏属性、用public方法控制读写以保障数据安全;防止非法赋值、避免对象状态不一致,且校验逻辑变更时调用方无感。

封装在 Java 中,核心是“把数据藏起来,把操作交出去”——用 private 封住属性,再用 public 方法 控制怎么读、怎么改,从而守住数据安全底线。
为什么需要封装来保障数据安全
不封装的属性就像敞开的抽屉:谁都能伸手乱拿乱放。比如年龄设成 public,外部代码可以写 p.age = -5 或 p.age = 300,程序不会报错,但逻辑已经崩了。封装就是加一把锁,让每次修改都必须经过验证环节。
- 防止非法赋值(如负数年龄、超长用户名)
- 避免对象处于不一致状态(如余额为负却未触发异常)
- 后续修改校验规则时,只需改 setter,调用方完全无感
封装的典型实现步骤
以 Person 类为例,四步到位:
- 将字段声明为 private:如
private int age;、private String name; - 提供 public getter 方法读取值(一般不做校验)
- 提供 public setter 方法写入值,并在其中加入业务校验逻辑
- 必要时,在 setter 中抛出异常或打印提示,拒绝非法输入
带校验的封装示例
下面这段代码确保年龄只能在 0–150 范围内:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
public class Person {
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
if (age >= 0 && age
<p>调用 <code>person.setAge(-10)</code> 不会破坏数据,而是被安静拦截——这就是封装对数据安全最直接的守护。</p>
<h3>进阶安全建议</h3>
<p>基础封装只是起点,真实项目中还可叠加以下手段强化保护:</p>
- 对敏感字段(如密码)的 setter 做哈希处理,不存明文
- getter 返回副本(如
new ArrayList(list)),防外部修改原集合 - 用
final修饰不可变字段,从源头杜绝修改可能 - 构造器中也做参数校验,避免对象一创建就带脏数据
封装不是把代码包起来就完事,而是通过访问控制 + 显式契约,让数据始终处于可信路径中运行。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










