在面向对象编程中,封装(encapsulation)是将对象运行所需的资源封装在程序对象中——基本上,是方法和数据。对象是“公布其接口”。其他附加到这些接口上的对象不需要关心对象实现的方法即可使用这个对象。这个概念就是“不要告诉我你是怎么做的,只要做就可以了。”对象可以看作是一个自我包含的原子。对象接口包括了公共的方法和初始化数据。在这次分享中有什么不懂的问题,或在Java中遇到的问题都可以问小编,也可以点击链接观看详细视频讲解。
封装(encapsulation)
封装是面向对象的三大特征之一
封装的理念:高内聚、低耦合
封装的作用和含义
我要看电视,只需要按一下开关和换台就可以了。有必要了解电视的内部的结构吗?有必要碰碰显像管吗?制造厂家为了我们方便使用电视,把复杂的内部细节全部封装起来,只给我们暴露简单的接口。
我们的程序设计要求“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合是仅暴露少量的方法给外部使用,尽量方便外部使用。
编程中封装的具体优点:
1、提高代码的安全性。
· 2、提高代码的复用性。
3、“高内聚”:封装细节,便于修改内部代码,提高可维护性。
4、“低耦合”:简化外部调用,便于调用者使用,便于扩展和协作。
封装的实现——使用访问控制符
Java是使用“访问控制符”来控制哪些细节需要封装,哪些细节需要暴露的。Java中4种“访问控制符”分别是private、default、protected、public,他们说明了面向对象的封装性,所以我们要利用它们尽可能的让访问权限降到最低,从而提高安全性。
【注意】关于protected的两个细节:
1、若父类和子类在同一包中,子类可访问父类的protected成员,也可以访问父类对象的protected成员。
2、若子类和父类不在同一个包中,子类可访问父类的protected成员,不能访问父类对象的protected成员。
封装的使用细节
开发中封装的简单规则:
1、属性中一般使用private访问权限。属性私有后,提供相应的get/set方法来访问相关属性,这些方法通常是public修饰的,以提供对属性的赋值与读取操作(注意:Boolean变量的get方法是is来头!)
2、方法:一些只用于本类的辅助性方法可以用private修饰,希望其他类调用的方法用public修饰。