码迷,mamicode.com
首页 > 编程语言 > 详细

类,抽象基类,接口类三者间的区别与联系(C++)

时间:2015-09-25 21:39:40      阅读:269      评论:0      收藏:0      [点我收藏+]

标签:

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

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

(1)结构上的区别:

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

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

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

(2)概念上的区别:

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

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

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

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

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

类,抽象基类,接口类三者间的区别与联系(C++)

标签:

原文地址:http://www.cnblogs.com/Tris-wu/p/4838691.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!