听起来可能很愚蠢,但是如果每个类都隐式地扩展了Object类,并允许其扩展一个以上的类,那么它怎么不具有多重继承呢?从用户的角度来看,可能会争辩说它们不支持多重继承,因为不允许用户扩展多个类。但是,这些语言似乎具有对多重继承的内部支持,只是为了使其简单起见,它没有向用户公开。我说得通吗

注意:我并不是在支持或反对支持多重继承。只是试图澄清一些想法。

最佳答案

典型的OO系统支持派生类的链(具有任意长度)。从任何一个子类的角度来看,父级构成了一个回到Object的链。一次查看所有类,我们发现类层次结构实际上是一棵树,在Object的正下方有一个非常大的扇出。

通常,不允许树上的两个分支在具有直接多个超类的类中再次合并,这就是“多重继承”的意思。

您是正确的,无论从英语意义上讲,它都可能是“多个”,但从OO意义上来说,不是“多个”,即最终能够将单个对象传递给多个接口,每个接口都需要一个其他不相关的父类的对象。

解决此限制的方法也是一种典型的方法,这就是为什么您在Java中具有接口并且在Ruby中包含(“ mixin”)模块。

10-06 08:49