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