类,抽象基类,接口类三者间的区别与联系(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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值