Java三大特性-封装

前言

         关于封装,一般面试不会问太多,三大特性问的最多的是多态,后面文章会给大家介绍!

1.什么是封装

        举个例子,一台电脑,人们正常操控的是电源,网线,开关机,光驱,usb,显示器等对外显现部分,而内部的cpu,主板,显卡,网卡等部分是不对外显现的,也是不建议人们自行去修改的,内部的核心组建被封装在在了主机箱以内-这就是一个封装的实例;

so,什么是封装呢?

        封装其实就是包装,也可以说是信息的隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。系统的其他对象只能通过包裹在数据外面的已经授权的操作来与这个封装的对象进行交流和交互。也就是说用户是不知道对象内部的实现细节的,但可以通过该对象对外的提供的接口来访问该对象。

2.为什么要有封装

谈到为什么要有封装,就得提到封装到底有什么特点了;

1)隐藏具体实现:对内修改不影响外部正常调用,不允许外部成员修改其隐藏的部分

        这样操作的好处在于安全,即当电脑无法开机的时候,维修人员修改内部组件,对我们而言是不可知的,我们不知道维修人员到底修改了哪些组件, 但结果就是我们能开机了-此处即对内修改不影响外部调用;

2)更好的操控成员:将内部成员分类,private-仅内部可以操控,protected-可以继承,public-外部成员可以操控;

3)降低代码耦合性:良好的封装是可以降低代码耦合性的,例如将主机的每个小部件进行封装,usb,光驱,键盘,鼠标等部件封装成独立个体,当鼠标不能运作的时候,不影响其他部件正常运行;

4)提升可复用性:每个部件都是独立的个体,可以在多种环境下使用;例如封装后的鼠标,既可以在笔记本上使用,也可以在台式机上使用。

3.封装实例

1)可以看一下未进行任何封装的例子:

Java三大特性-封装_第1张图片
可以看出这样写的缺点是:无复用性,如果另一个地方用鼠标,那就得新建;

2)进行简单封装,此处为了方便,就都写在一个类里面了,方便大家观察;实际运用,建议分开;

Java三大特性-封装_第2张图片
这部分我们进行了简单的封装,提高了复用性,其他地方也可以使用,但是目前的方案安全性不高,容易被非法修改内容

3)再次进行改进

Java三大特性-封装_第3张图片
可以看到,现在安全性满足了,复用性也满足了,但是所有方法都成了隐藏的,外部用户只能看到一个黑盒子,完全无从下手

4)再次改进,将对外方法开放出来

Java三大特性-封装_第4张图片
排版有点搓大家将就着看一下,右侧是输出结果; 可以看一下,这样封装后,便达到了我们的目的

4.面试回答封装

    众所周知面试的时候不能扑拉扑拉的把这么多内容给他背下来;也没有这么多扯淡的时间;

    言简意赅的概括封装:

    封装性就是把对象的属性和服务组合成一个独立的单位,提高复用性,降低耦合性,并尽可能隐藏内部实现,提高安全性;

    最后告知大家,重要的还是理解设计原理,带着问题去看才能学到东西,当然可能有比较着面试的朋友没什么时间准备,那就只能去背我们总结的了,希望能帮到正在找工作的您;

    写的有不对的地方还请大家指出,我们会第一时间更正, 您的支持是我们努力的更新的动力源泉,欢迎大家将面试过程中遇到的问题发给我们,我们会第一时间整理更新,希望能帮忙更多正在找工作的朋友;

你可能感兴趣的:(Java三大特性-封装)