我在 Meyers 的书中找到了这两个术语,但它们有什么区别呢?
接口继承是公共继承,而实现继承是私有继承。
如果类B公共继承自A,则B “是一个” A:它继承了A的整个接口,并且可以将B对象的(引用/指针)自动向上转换为A,并在任何期望A对象的地方使用。但是,如果B私有继承自A,则B“是以A为实现的”:只继承A的实现,而不是其接口。因此,B对象的(引用/指针)不能在期望A对象的地方使用。
为了回应@Michal的评论,以下是一些链接(主要基于搜索“c++实现继承”),以展示这些术语在C++环境中的常见用法:
实现继承(或类继承)是指将基类中的公共实现部分分离出来。
接口继承是指使用虚方法。它旨在将接口与实现分离,并最小化程序元素之间的依赖关系。
private
继承应仅在非常有限的情况下使用(主要是:虚拟覆盖/空基类优化)。“基于实现”的关系最好通过组合实现。 - Matthieu M.