前言
关于封装,一般面试不会问太多,三大特性问的最多的是多态,后面文章会给大家介绍!
1.什么是封装
举个例子,一台电脑,人们正常操控的是电源,网线,开关机,光驱,usb,显示器等对外显现部分,而内部的cpu,主板,显卡,网卡等部分是不对外显现的,也是不建议人们自行去修改的,内部的核心组建被封装在在了主机箱以内-这就是一个封装的实例;
so,什么是封装呢?
封装其实就是包装,也可以说是信息的隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。系统的其他对象只能通过包裹在数据外面的已经授权的操作来与这个封装的对象进行交流和交互。也就是说用户是不知道对象内部的实现细节的,但可以通过该对象对外的提供的接口来访问该对象。
2.为什么要有封装
谈到为什么要有封装,就得提到封装到底有什么特点了;
1)隐藏具体实现:对内修改不影响外部正常调用,不允许外部成员修改其隐藏的部分
这样操作的好处在于安全,即当电脑无法开机的时候,维修人员修改内部组件,对我们而言是不可知的,我们不知道维修人员到底修改了哪些组件, 但结果就是我们能开机了-此处即对内修改不影响外部调用;
2)更好的操控成员:将内部成员分类,private-仅内部可以操控,protected-可以继承,public-外部成员可以操控;
3)降低代码耦合性:良好的封装是可以降低代码耦合性的,例如将主机的每个小部件进行封装,usb,光驱,键盘,鼠标等部件封装成独立个体,当鼠标不能运作的时候,不影响其他部件正常运行;
4)提升可复用性:每个部件都是独立的个体,可以在多种环境下使用;例如封装后的鼠标,既可以在笔记本上使用,也可以在台式机上使用。
网友评论