Ruby,Java等中的多重继承

Sri*_*i K 0 ruby java multiple-inheritance

这可能听起来很愚蠢,但是如果每个类都隐式扩展了Object类并且允许再扩展一个类,那么它怎么不是多重继承呢?从用户的角度来看,可能有人认为它们不支持多重继承,因为不允许用户扩展多个类.但是,这些语言似乎具有对多重继承的内部支持,而这种继承只是为了保持简单而不向用户公开.我有道理吗?

注意:我不支持或反对支持多重继承.只是想澄清一些想法.

Dig*_*oss 7

典型的OO系统支持派生类的(具有任意长度).从任何一个子类的角度来看,父母形成一个回到Object的链.一次查看所有类,我们看到类层次结构实际上是一个树,在Object下面有一个非常宽的扇出.

什么是典型的就是允许在树上两个分支在具有类再次合并直接多个超,以及具体是什么"多重继承"的意思.

你是正确的,它在英语意义上可能是"多重",但在OO意义上不是"多重",最终能够将单个对象传递给多个接口,每个接口都需要一个不相关的父类对象.

解决此限制的一种方法也很典型,这就是为什么你有Java的接口和Ruby中的包含("mixin")模块的原因.