在 Java 中,封装(Encapsulation)是面向对象编程(OOP)的三大基本特性之一(另外两个是继承和多态)。简单来说,封装就是把对象的属性和行为“包”在一起,并隐藏内部实现细节,只对外提供可控的访问方式。
下面从几个角度帮助你理解。
“该隐藏的隐藏,该暴露的暴露”
这样可以:
Java 提供了 4 种访问控制符:
| 修饰符 | 同类 | 同包 | 子类 | 其他包 |
|---|---|---|---|---|
private |
✅ | ❌ | ❌ | ❌ |
| 默认(不写) | ✅ | ✅ | ❌ | ❌ |
protected |
✅ | ✅ | ✅ | ❌ |
public |
✅ | ✅ | ✅ | ✅ |
封装通常做法:
privatepublic(或按需)class Person {
public int age;
}
Person p = new Person();
p.age = -100; // 逻辑错误,但语法没问题
class Person {
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
if (age < 0 || age > 150) {
throw new IllegalArgumentException("年龄不合法");
}
this.age = age;
}
}
Person p = new Person();
p.setAge(25); // 安全
外部不能直接修改属性,必须通过方法,可以在方法里做校验。
使用者只关心“能做什么”,不关心“怎么做的”。
“对象自己管理自己的数据”
电视机的内部电路是封装的
你只能通过**遥控器(public 方法)**来操作
不能直接去碰里面的芯片(private 属性)
Java 的封装 = 私有属性 + 公开方法 + 访问控制
如果你愿意,我也可以:
你想从哪方面再深入?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。