大话设计模式之面向对象基础篇(二)

  在大话设计模式之面向对象基础篇(一)中说了类和实例、构造方法、方法重载,本文继续总结其他相关知识:

属性和修饰符

  属性是一个方法或是一对方法,在调用它的代码来,它是一个字段,即属性适合于以字段的方式使用方法调用的场合。

  修饰符的作用说白了就是设定访问权限,像Public和Private使我们学习VB的时候就开始接触的,前者表示公有,后者表示私有。那么他们管辖范围是什么呢?答曰:类。

  Public表示所修饰的类成员可以允许其他任何类来访问,Private表示只允许同一个类中的成员访问。(学习C#的时候我们还接触了Protected这个修饰符,他表示继承时子类对基类具有完全访问权,这个父亲只疼爱自己的孩子,不搭理其他孩子)

  通常字段都是Private,属性都是Public。用一个形象的比喻,房子的门和窗就是public,而房子里边的东西就是Private 例如下边的关于“猫叫次数”的例子:

<span style="font-size:18px;">  private int shoutNum = 3;   //声明一个内部字段,注意是Private,默认叫的次数为3
        public int ShoutNum
        {
            get     //负责的是读功能
            {
                return shoutNum;  //ShoutNum属性,当中的get方法表示外界调用时用到shoutNum的值,set表示外界可以给内部的shoutNum赋值         
            }
            set      //负责的是写功能
            {
                shoutNum = value;
            }
        }</span>


我的理解:Public就是打开天窗说亮话,Private就是闭关锁国。

封装

  每个对象都包含它能进行操作所需要的所有信息,这个特性称为“封装”,因此对象不必依赖其他对象来完成自己的操作,这样方法和属性包装在类中,通过类的实例来实现。
  封装的好处:减少耦合、类内部的实现可以自由修改、类具有清晰的对外接口。
  刚才说过的房屋的门窗,就是封装对象暴露在外的属性和方法,专供外人进出,以及流通空气,带来阳光。
我的理解:封装好比自给自足的农业社会。

继承

  封装的目的是为了方便继承,在我看来,就是将公共的东西组合在一起成为一个外人只能感受到功能作用却看不到内部组成的黑箱子(还没有经过相关部门批准使用的公共仓库)。
  当封装碰到继承,他便更加“人如其名”,为什么呢?因为此时的他就像是一个经过了批准后能投入使用的公共仓库,它集合了某一类事物的共同特性,当这类事物需要具体化的时候,便通过“继承”这个方式获取了使用公共仓库的东西的权利,同时推陈出新,标新立异,但是他并没有忘本。

  为什么说他没有忘本呢?请看下边继承的概念理解:
  对象的继承代表了一种“is-a”的关系,如果两个对象A和B,可以描述为B是A,则表明B可以继承A,继承者还可以理解为是对被继承者的特殊化,因为他除了具备被继承者的特性外,还具备自己独有的个性
  看到这里,我想到矩形和正方形,仿照前文,我们就可以将枯燥抽象的定义形象化、生活化了——有两个对象矩形和正方形,可以描述为正方形是矩形,则表明正方形可以继承矩形,正方形就是矩形的特例,它除了具备矩形有四条边,四个角是直角的特性外,还具备自己的个性(四条边相等),故说继承者没有忘本

  学好继承要记住三句话:如果子类继承于父类(1)子类拥有父类非private的属性和功能(2)子类拥有自己的属性和功能(3)子类可以以自己的方式实现父类的功能(方法重写)

  注意:子类从父类中继承的成员有方法、域、属性、事件、索引指示器,但是对于构造方法不能继承,只能调用用base关键字。

  总而言之,继承的有点就是以共享的方式实现了代码的复用,使得可修改性和可扩展性提高。

我的理解:被继承者=封装者=父亲,继承者就是儿子,儿子还可以再生儿子。龙生九子,九子各有不同,但是他们都是龙。

总结

  本篇博客从属性和修饰说起,然后到封装和继承,总结的过程中有一种这样的感受,面向对象都是攘外必先安内的原则,通过属性和修饰符等,设计好对外的权限,然后进行封装,算是完成内部决策工作后以新的面貌面向大众,然后给了大众继承的权利从而达到偷懒的机会,看来,在面向对象的世界里,“坐吃山空、不劳而获”并不是一种罪恶啊……

你可能感兴趣的:(继承,封装,属性和修饰符,面向对象基础知识)