面向对象之封装

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

       比如你的手机,手机的键盘,屏幕,听筒等,就是其对外接口。你只需要知道如何按键就可以使用手机,而不需要了解手机内部的电路是如何工作的。封装机制就像手机一样只将对外接口暴露,而不需要用户去了解其内部实现。细心观察,现实中很多东西都具有这样的特点。

对于封装而言,一个对象它所封装的是自己的属性和方法,所以它是不需要依赖其他对象就可以完成自己的操作。

为什么要封装?因为对象也是隐私的,没有人希望外界能知道自己的隐私,所以为了确保对象(爱人)在外界的良好形象就要保护好对象的隐私(对于人来说),那么对于程序来说,让别人知道的隐私越少,暴露出来的bug也能越少。当然隐私有时候也不是绝对的,比如有些事情对于家人就不算隐私,对同事,同学就完全算是隐私(身体上的特征)。

程序设计要追求“高内聚、低耦合

·高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;

·低耦合:仅暴露少量的方法给外部使用

所以要封装,隐藏对象的属性和实现细节,仅对外提供公共访问方式。

封装带来的好处

1.封装使得对代码的修改更加安全和容易。将代码分成了一个个相对独立的单元。将变化隔离;提高安全性;

2.便于使用隐藏对象内部的复杂性,只对外公开简单的接口,便于外界调用,从而提高系统的可拓展性、可维护性。封装使整个软件开发复杂度大大降低。 能很好的使用别人的类(class),而不必关心其内部逻辑是如何实现的。你能很容易学会使用别人写好的代码,这就让软件协同开发的难度大大降低。

3.封装还避免了命名冲突的问题。

4.提高复用性;

5.类内部的结构可以自由修改。

6.可以对成员进行更精确的控制

【封装原则】

1.将不需要对外提供的内容都隐藏起来;

2.把属性都隐藏,提供公共方法对其访问

注意:

封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法,如果不想被外界方法,我们大可不必提供方法给外界访问。但是如果一个类没有提供给外界访问的方法,那么这个类也没有什么意义了。

封装实现的步骤

完成一个类的定义

所有属性私有化

给每个属性提供set/get方法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1、封装的概念 将对象的数据与操作数据的方法相结合,通过方法将对象的数据与实现细节保护起来,就称为封装。外...
    岁月神偷_bde8阅读 4,007评论 0 0
  • 第二天,在面向对象的基础上又学习了封装这个概念,单从字面意思理解,封装就是将一堆东西给封装起来,可是要是真正的理解...
    遇见陌生阅读 4,780评论 0 1
  • 什么时候应该封装类 当项目中出现一些零散的、有关系的基本类型数据时,考虑通过类型将这些数据统一组织起来管理。定义一...
    零_WYF阅读 1,877评论 0 0
  • 封装的作用: 1.隔离性: 被封装后的对象(这里的对象是泛指代码的编程单元,一般指:程序集,命名空间,类,方法,属...
    liudai123阅读 1,783评论 0 0
  • 如果你认为封装仅仅是private + getter and setter,那你就大错特错了! 什么是封装 对于面...
    Sharember阅读 8,186评论 31 70

友情链接更多精彩内容