如果有人问你什么是封装呢?
答:成员变量或成员方法的作用域范围不同。
这个问题有标准答案吗?不知道,那咱们就找几个不同的答案对比一下吧!
正文
百度百科:
封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别;将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。
菜鸟教程:
在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。
封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。
知乎:
封装:把对象的属性和方法结合成一个独立的整体,隐藏对象的属性和实现细节,仅对外提供公共访问方式。
其实说白了封装跟作用域是有关系的,代码的编写代码中的好多概念都是可以用现实生活中的事例来对比的。
作用域是什么呢?
作用域(scope),程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。
现实中典型的作用域的例子比如说,地址。地址是怎么封装的呢?
地址分省市区,同样的一个省的名字就好比一个作用域,不同的省份首先地理位置上是不同的,我们说哪个省就很容易的对应上这个省的地理位置。
对应到代码中就好比,public,protected,private,不同的字代表不同的作用域,使用场景也不同,类中的成员变量和成员方法就有不同的作用域就实现了封装。
通过我们查询的几个概念也能明白,其中就涉及到两个关键字,隐藏和公开。对于一个类的封装来说,类里边的私有的方法,私有的成员变量就是隐藏的部分,公共的对外的方法就是公开的部分。一个类提供对外的公开的部分来提供服务,由内部隐藏的部分实现代码逻辑,这样的代码应该是极好的!
封装还有三个主要特点:
1、良好的封装能够减少耦合
2、类内部的实现可以自由的修改
3、类具有清新的对外的接口
所以在编码的过程中用好作用域用好封装是极其重要的。
比如cpu封装后是这个样子的
内部有可能是这个样子的
结束
欢迎各位大佬交流讨论!