为什么钻石案例及其共同的祖先被用来解释Java多重继承问题,而不是两个不相关的父类?
这个问题对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个类来演示问题,所以通过将其与钻石问题进行比较很容易理解。
让我知道这个例子是否不适合解释问题,或者这也可以参考来理解问题。
编辑:我在这里得到了一个接近的投票,指出这个问题不清楚。这是主要问题:-
我能理解为什么“Java不支持3个类的多重继承”,如上所述,或者我必须有4个类(菱形结构)才能理解这个问题。