类、接口与继承

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_26566137/article/details/82228549

类的概念:
参考:http://www.cnblogs.com/mr-wid/archive/2013/02/18/2916309.html

一、"类" 的介绍
    在C++中, 用 "类" 来描述 "对象", 所谓的"对象"是指现实世界中的一切事物。那么类就可以看做是对相似事物的抽象, 找到这些不同事物间的共同点, 如自行车和摩托车, 首先他们都属于"对象", 并且具有一定得相同点, 和一些不同点, 相同点如他们都有质量、都有两个轮子, 都是属于交通工具等。"都有质量""两个轮子"属于这个对象的属性, 而"都能够当做交通工具"属于该对象具有的行为, 也称方法。

   类是属于用户自定义的数据类型, 并且该类型的数据具有一定的行为能力, 也就是类中说描述的方法。通常来说, 一个类的定义包含两部分的内容, 一是该类的属性, 另一部分是它所拥有的方法。以 "人类" 这个类来说, 每个人都有自己的姓名、年龄、出生日期、体重等, 为 人类 的属性部分, 此外, 人能够吃饭、睡觉、行走、说话等属于人类所具有的行为。

    上面举例中所描述的 "人" 类仅仅是具有人这种对象的最基础的一些属性和行为, 可以称之为人的"基类"。 再说说一些具有一些职业的人, 例如学生, 一个学生还具有"基类"中所没有的属性, 如学校、班级、学号; 也可以具有基类所不具有的行为, 如每天需要去上课, 需要考试等。

    学生类可以看做是基类的一个扩展, 因为他具有基类的所有属性和行为, 并且在此基础上增加了一些基类所没有的属性和行为, 像"学生"这样的类称为"人类"这个基类的"派生类"或者"子类"。在学生的基础上海可以进一步的扩展出其他更高级的类, 如"研究生"类。


###三个的区别
联系很明显,三个都是‘类’,如果读者对类的概念不清楚,可以参照wid的博文http://www.cnblogs.com/mr-wid/archive/2013/02/18/2916309.html。

下面着重解释一下区别,但此文仅是个人理解,如果觉得我说的不对的地方,还请赐教。

(1)结构上的区别:

    普通类:数据+方法+实现

    抽象类:数据+方法(一定包含虚方法n>=1)+部分方法的实现

    接口类:方法(纯虚方法)

(2)概念上的区别:

    普通的类和另外两个的区别很明显,普通类就是猫狗之类的,而抽象类就是动物类。但接口类与抽象类的区别不太明显,下面就说说这两个类。

    接口类算是从抽象类中分离出来的特殊的抽象类(纯虚方法且不含数据的抽象类),抽象类侧重点在‘类’的角度上,而接口类则侧重于‘方法’。引用《大话设计模式》中的一句话就是,“类是对对象的抽象,抽象类是对类的抽象,而接口是对行为的抽象。”

    举个例子,猫、狗类(普通的具体类)继承于动物类(抽象类),而猫、狗类又有共同的‘吃饭’的行为,这时,我们就可以写一个‘吃饭’的接口类,让猫、狗类继承并实现这个方法。

    抽象类是从子类中发现公共的东西泛化出父类,从而让子类继承父类,但是你写接口类的时候不一定知道子类的存在,但就如‘吃饭’一样,肯定都是要的,只是具体的子类如何实现就要看子类是啥了,猫吃鱼、狗啃骨头,具体‘吃饭’的方法在子类中实现。

看《大话设计模式》时总结出来的,如果还不理解,可以直接去看那本书附录A。

接口类算是从抽象类中分离出来的特殊的抽象类(纯虚方法且不含数据的抽象类),抽象类侧重点在‘类’的角度上,而接口类则侧重于‘方法’。引用《大话设计模式》中的一句话就是,“类是对对象的抽象,抽象类是对类的抽象,而接口是对行为的抽象。”
上述中数据表示类中的具有的属性,而不是行为;

猜你喜欢

转载自blog.csdn.net/sinat_26566137/article/details/82228549