是否有任何语言允许同时继承两个或更多课程?
我知道PHP和Java不允许这样做。我想其他语言也不允许这样做。但为什么?我认为它会非常有用。这里的代码(它不是任何语言的正确语法)解释了我的意思......
class X extends Y, Z {
}
如果可能的话,X类将拥有Y和Z所拥有的所有字段和方法。
答案 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”机制。
答案 4 :(得分:1)
想象一下,在Y和Z类中有两个具有相同名称的属性/方法,因此编译器不知道必须继承哪个类属性/方法。
*在Java中,您可以使用接口进行多重继承。
答案 5 :(得分:0)
的Python:
class DerivedClassName(Base1, Base2, Base3):
<statement-1>
.
.
.
<statement-N>
参见Python tutorial 9.5.1。多重继承