有没有允许同时继承两个或更多类的语言?

时间:2011-04-28 11:45:22

标签: inheritance multiple-inheritance

是否有任何语言允许同时继承两个或更多课程?

我知道PHP和Java不允许这样做。我想其他语言也不允许这样做。但为什么?我认为它会非常有用。这里的代码(它不是任何语言的正确语法)解释了我的意思......

class X extends Y, Z {

}

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

6 个答案:

答案 0 :(得分:6)

以下语言支持多重继承:

Perl,Perl 6,Python,C ++,Curl,Dylan,Eiffel,Logtalk,Object REXX,OCaml和Tcl 另外 Scala(通过使用mixin类)和PHP(通过使用traits类)

并且很高兴知道

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

答案 1 :(得分:4)

C ++允许多重继承。

您可以在C ++的创建者Bjarne Stroustrup撰写的文章中阅读此功能here的完整说明。

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

我当然不建议学习C ++只是为了利用多重继承。

答案 2 :(得分:2)

答案 3 :(得分:2)

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

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

答案 4 :(得分:1)

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

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

答案 5 :(得分:0)

的Python:

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

参见Python tutorial 9.5.1。多重继承