封装是 Java 面向对象编程(OOP)的三大核心特性(封装、继承、多态)之一,其核心思想是
隐藏对象的属性和实现细节,仅通过公共接口对外暴露必要的操作,从而实现数据安全和代码模块化。
封装(Encapsulation)可以理解为 “包装”:将对象的状态(属性)和行为(方法)捆绑在一起,通过访问控制符限制外部直接访问内部细节,只允许通过预定义的方法与对象交互。
举例:现实中的 “手机” 就是封装的典型案例 —— 用户无需知道内部芯片、电路的工作原理(隐藏细节),只需通过屏幕、按键等接口(公共方法)操作手机(打电话、发消息)。
- 数据安全:防止外部随意修改对象属性,避免不合理的值(如年龄为负数)。
- 隐藏实现细节:外部只需关注 “如何用”,无需知道 “如何实现”(如调用
ArrayList的add()方法时,无需了解底层数组扩容逻辑)。
- 代码可维护性:内部实现修改时(如属性存储方式变化),只要公共接口不变,外部代码无需调整。
Java 通过访问控制符和公共方法实现封装,步骤如下:
- 用
private修饰属性(隐藏属性,禁止外部直接访问);
- 提供
public的getter方法(用于获取属性值)和setter方法(用于修改属性值);
- 在
setter方法中添加逻辑验证(如限制值的范围)。
Java 通过 4 种访问控制符控制访问权限,封装的关键是合理使用private和public:
封装原则:属性通常用private,公共方法用public,内部辅助方法用private。
JavaBean 是封装的典型实践,它是一种遵循特定规范的类:
- 类是
public的,有无参构造方法;
- 属性用
private修饰;
- 提供
public的getter/setter(布尔类型的getter通常命名为isXxx())。
public class User {
private String username;
private boolean isVip;
JavaBean 广泛用于框架(如 Spring、MyBatis)中,便于数据传递和序列化。
封装的核心是 “隐藏细节,暴露接口”,通过:
private修饰属性,阻止外部直接修改;
public的getter/setter控制访问,添加验证;
- 访问控制符合理搭配,实现安全与灵活的平衡。
掌握封装是编写健壮、可维护 Java 代码的基础,也是理解后续继承、多态的前提