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

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

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

(1)结构上的区别:

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

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

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

(2)概念上的区别:

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

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

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

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

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

原文链接: https://www.cnblogs.com/Tris-wu/p/4838691.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

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

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/222289

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月13日 上午11:40
下一篇 2023年2月13日 上午11:41

相关推荐