封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。系统的其他对象只能通过包裹在数据外面的已经授权的操作来与这个封装的对象进行交流和交互。也就是说用户是无需知道对象内部的细节,但可以通过该对象对外的提供的接口来访问该对象。
比如你的手机,手机的键盘,屏幕,听筒等,就是其对外接口。你只需要知道如何按键就可以使用手机,而不需要了解手机内部的电路是如何工作的。封装机制就像手机一样只将对外接口暴露,而不需要用户去了解其内部实现。细心观察,现实中很多东西都具有这样的特点。
对于封装而言,一个对象它所封装的是自己的属性和方法,所以它是不需要依赖其他对象就可以完成自己的操作。
为什么要封装?因为对象也是隐私的,没有人希望外界能知道自己的隐私,所以为了确保对象(爱人)在外界的良好形象就要保护好对象的隐私(对于人来说),那么对于程序来说,让别人知道的隐私越少,暴露出来的bug也能越少。当然隐私有时候也不是绝对的,比如有些事情对于家人就不算隐私,对同事,同学就完全算是隐私(身体上的特征)。
程序设计要追求“高内聚、低耦合”
·高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;
·低耦合:仅暴露少量的方法给外部使用
所以要封装,隐藏对象的属性和实现细节,仅对外提供公共访问方式。
封装带来的好处
1.封装使得对代码的修改更加安全和容易。将代码分成了一个个相对独立的单元。将变化隔离;提高安全性;
2.便于使用隐藏对象内部的复杂性,只对外公开简单的接口,便于外界调用,从而提高系统的可拓展性、可维护性。封装使整个软件开发复杂度大大降低。 能很好的使用别人的类(class),而不必关心其内部逻辑是如何实现的。你能很容易学会使用别人写好的代码,这就让软件协同开发的难度大大降低。
3.封装还避免了命名冲突的问题。
4.提高复用性;
5.类内部的结构可以自由修改。
6.可以对成员进行更精确的控制
【封装原则】
1.将不需要对外提供的内容都隐藏起来;
2.把属性都隐藏,提供公共方法对其访问
注意:
封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法,如果不想被外界方法,我们大可不必提供方法给外界访问。但是如果一个类没有提供给外界访问的方法,那么这个类也没有什么意义了。
封装实现的步骤
完成一个类的定义
所有属性私有化
给每个属性提供set/get方法
网友评论