【发布时间】:2010-09-22 22:53:02
【问题描述】:
我在迈耶斯的书中找到了这两个术语,但有什么区别?
【问题讨论】:
标签: c++ inheritance
我在迈耶斯的书中找到了这两个术语,但有什么区别?
【问题讨论】:
标签: c++ inheritance
接口继承是公有继承,实现继承是私有继承。
如果B类公开继承于A,B是一个 A:它继承了A的整个接口,一个B对象的(引用/指针)可以自动向上转换到A,并在需要 A 的对象的任何地方使用。但是,如果 B 私有地从 A 继承,则 B is-implemented-in-terms-of A:只有 A 的实现被继承,不它的接口。因此(指向)B 对象的(引用/指针)不能在需要 A 对象的地方使用。
为了反映 @Michal 的评论,这里有一些链接(主要基于 googling "c++ implementation inheritance")来展示这些术语在 C++ 上下文中的常见用法:
【讨论】:
private 继承只能在非常有限的情况下使用(主要是:虚拟覆盖/空基优化)。 “根据以下方式实现”关系最好通过组合来实现。
实现(或类)继承是指在基类中分离实现的公共部分。
接口继承是你使用虚方法的时候。它旨在将接口与实现分离,并最大限度地减少程序元素之间的依赖关系。
【讨论】:
主要区别在于接口是公共继承,实现是私有继承。 公共和受保护部分的数据成员和方法将在公共继承中各自的访问说明符中从基类继承到派生类。同时派生类的对象可以像普通方法一样访问基类的数据成员. public 和 protected 部分的数据成员和方法将在私有访问说明符中从基类继承到派生类
【讨论】: