是否有语言支持两个或多个类的多重继承?


Are there languages that support Multiple Inheritance of two or more Classes?

我知道PHP和Java不允许这样做。我猜其他语言也不允许这样做。但是为什么呢?我认为这将非常有用。

这里的代码(它不是正确的语法对任何语言),解释了我的意思…

class X extends Y, Z {
}

如果可能的话,类X应该拥有Y和Z所拥有的所有字段和方法。

以下语言支持多重继承:

Perl、Perl 6、Python、c++、Curl、Dylan、Eiffel、Logtalk、Object REXX、OCaml和Tcl还有 Scala (通过使用mixin类)和PHP (通过使用traits类)

一些语言,如c#、Java和Ruby实现了单继承,尽管协议或接口提供了一些真正的多重继承的功能。

c++允许多重继承

您可以在c++的创建者Bjarne Stroustrup的文章中阅读该特性的完整描述。

但这不是解决你所有问题的灵丹妙药。多重继承产生的问题通常比它解决的问题要多。如果你用你选择的语言发布一个问题来解释你想要达到的目标,也许你会得到更好的建议。

我当然不会建议仅仅为了利用多重继承而学习c++。

c++ ?

http://www.learncpp.com/cpp-tutorial/117-multiple-inheritance/

我想参考维基百科,因为那里有一个编程语言列表,它们以您期望的方式支持多重继承,或者作为称为"mixin"的机制。

http://en.wikipedia.org/wiki/Multiple_inheritance

假设在Y类和Z类中有两个具有相同名称的属性/方法,因此编译器不知道必须继承哪个类的属性/方法。

*在Java中,你可以使用接口进行多重继承

Python:

class DerivedClassName(Base1, Base2, Base3):
<statement-1>
.
.
.
<statement-N>

参见Python教程9.5.1。多重继承

在Java中可以通过接口默认方法实现多重继承。这不是完美的,但大多数情况下是有效的。