这个问题对于 Java 人来说可能听起来很奇怪,但如果你尝试解释一下,那就太好了。
这几天我正在理清Java的一些非常基础的概念。
所以我来到了Java的继承和接口主题。
在阅读本文时,我发现Java不支持多重继承,并且也理解了这一点,我无法理解为什么到处讨论钻石图问题(至少4个类来创建钻石)来解释这种行为,我们不能仅使用 3 个类来理解这个问题。
比如说,我有 A 类和 B 类,这两个类是不同的(它们不是公共类的子类),但它们有一个公共方法,它们看起来像:-
class A {
void add(int a, int b) {
}
}
class B {
void add(int a, int b) {
}
}
好的,现在假设 Java 是否支持多重继承,并且是否有一个类是 A 和 B 的子类,如下所示:-
class C extends A,B{ //If this was possible
@Override
void add(int a, int b) {
// TODO Auto-generated method stub
super.add(a, b); //Which version of this, from A or B ?
}
}
那么编译器将无法找到从A还是B调用哪个方法,这就是Java不支持多重继承的原因。那么这个概念有什么问题吗?
当我读到这个主题时,我能够理解钻石问题,但我无法理解为什么人们不给出三个类的例子(如果这是有效的,因为我们只使用了 3 个类来演示问题,所以很容易通过将其与钻石问题进行比较来理解。)
让我知道这个例子是否不适合解释问题,或者也可以参考这个例子来理解问题。
Edit:我在这里得到了接近的一票,表明这个问题尚不清楚。
这是主要问题:-
我能理解为什么“Java不支持多重继承”只有如上所述的3个类吗?或者我必须需要有4个类(菱形结构)才能理解这个问题。