再说“对象”这个国度,浅说封装

“比较”啰嗦~。~

        自上次刚刚理解了面向对象的思想之后,自己也渐渐形成了自己的面向对象的思路,然而,知识的世界何其浩瀚,有思路也才只是个开始。那面向对象就仿佛这篇符号世界 的一片大陆,那么我们的探索就从这片大陆开始。

       在面向对象这片大陆上,有着三个巨大的过度,他们统治着这里的无数符号子民。这三个国度分别是:封装、继承、多态

      那么首先我们今天就来讲讲面向对象的封装。下面分两种介绍比较:

一、Python 类的封装

     1.Python中类的讲解是我们上次讲的内容,一句话概括就是:在面向对象的大陆上,各种各样的数据横行霸道,于是,封装“帝国”站了出来,他们提出了“类”的说法,然后将各种具有相似性质的数据进行了分类,随后放在了不同的地方。这就是最简单的类了。

      2.网上的资料都是把类说成抽象化 的一个概念,是将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体(即类);我相信大部分都不会听的太懂。所以我在这里将它们给你人化一下。理解起来或许就没那么难了。

      “封装”既然能成一个帝国,肯定有它们的过人之处,他的帝国能够稳固存在也肯定是有他的原因的。那么,在他的帝国之下,有着千千万万的子民,如果只是按照相似的类型放一块的话,那肯定是要出问题的,所以,“封装”就想出了一个神奇的办法,让所有子民有自己的空间,有自己的私有权限,想共享知识就共享,不想共享就不给你看。想看也得先告诉我我才能让你看。于是,这个国度就变得秩序起来。这里我们说的就是类的公有属性,和私有属性了。

        那么形象化讲起来很容易理解,现在就要回到知识上了。在其他语言中,类中的属性共有和私有可能是用Public ,Private来表示的。而我们学习的是Python,在Python中表示的就跟他们不一样了。下面我们以几行简单的代码的对比来演示:

     在这里我们是定义了一个最简单的“人”的类,定义了名字和年龄的属性,相信细心的你们一定会发现定义的两个属性前面都有一个双下划线,那么,我想说,恭喜你们,你们已经发现了封装的最重要的一点。

    这里的双下划线“__”其实就是类似于其他类似Java语言中的Private 的关键字,说明这里的属性是私有的,如果别人不通过“特殊手段”访问的话,是没办法访问的。就彷如“封装”那个国度中每个人都会有自己的存钱罐儿,如果别人想问你存钱罐儿里面有多少钱,你肯定是不会说的吧!毕竟这是私有资产,除非咱俩是非常要好的朋友或者有亲戚关系的话,我才会告诉你这些信息,给你说要通过特殊方法才能看到里面有多少钱。

    上一段中我还提到 了特殊手段, 这里的特殊手段其实就是两方商量好 的特殊方法,通俗来说就是"保险箱的密码",那么在Python中来说就真的 是特殊方法

     细心的人还会发现,每个属性下面都还定义了一个相关的方法,一个是set_**,一个是get_**。这个就是Python中私有属性 的访问方法了。

     所以,拿专业点的说法就是:封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,一特定的访问权限来使用类的成员。

    当然,类不可能只有成员属性,这一类东西肯定不止是一些特征的集合,肯定还会有自己的方法。所以说,类也能定义自己的方法。类的方法定义类似与他的函数定义,所以,只要把他的方法当做函数来理解定义即可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,761评论 25 709
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,217评论 6 13
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,785评论 18 399
  • 今天是九月三十号,第三个烈士节。 革命先烈们用他们的生命换来我们今天的安康,我们无以为报,只能用最真挚的赤子之...
    PeerlessL阅读 456评论 0 0
  • 酒深巷,痴情浓。酒的原料是大自然的产物,而酒是人类智慧的结晶。 21:17☞晚餐之美味佳肴依旧进行,这顿爱心晚餐要...
    字典与胡路阅读 563评论 0 0