为什么Java不支持多重继承?

7
可能重复:
为什么Java不支持多继承,但允许实现多个接口 大家好,我是Java的新手。当我尝试在Java中使用多继承概念时,它显示编译时错误。为什么Java不支持多继承?我听说过接口关键字,但不知道为什么Java直接支持它。请帮助我解决这个问题并进行解释。

1
为什么Java不允许多重继承? 为什么Java中没有多重继承,却可以实现多个接口? 为什么Java允许从接口多重继承,但不允许从抽象类多重继承? Java中有多重继承吗? Java中多重继承的替代方案是什么? - tim_yates
3个回答

21

多重继承的主要问题(由Colin和Rin提到)是众所周知的“菱形继承问题”

我引用:

当两个类B和C从A继承,并且类D同时从B和C继承时,如果D中的一个方法调用了在A中定义的方法(并且未覆盖该方法),而B和C已经分别对该方法进行了覆盖,那么它会从哪个类继承:B还是C?


16

多重继承可能很难理解。当您有一个多重继承具有冲突方法的两个类时,您如何处理这种情况?

当然,解决方案存在(例如在C ++中),但Java的创建者们决定它太复杂了,并不符合Java的哲学(使开发变得更加容易)。

来自sun.com:

多重继承及其引起的所有问题已从Java中丢弃。接口提供了多重继承的理想特征 - 与Objective C协议概念上类似。
接口不是类的定义。相反,它是一个或多个类将实现的方法集的定义。接口的一个重要问题是它们仅声明方法和常量。接口中不能定义变量。


资源:


1

因为它很难使用。相反,Java有更好的解决方案,即接口


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接