关于钻石问题的维基百科:
"......当两个B和C类继承自A,而D类继承自B和C时,钻石问题就会产生歧义.如果D中的方法调用A中定义的方法(并且不重写方法) ),B和C以不同的方式覆盖了该方法,然后从哪个类继承:B或C?"
所以钻石看起来像这样:
A
/ \
B C
\ /
D
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果没有这样的A类会发生什么,但B和C再次声明相同的方法,比如说foo().这不是同一个问题吗?为什么它被称为钻石问题?
例:
class B {
public void foo() {...}
}
class C {
public void foo() {...}
}
class D extends B, C {
}
new D().foo();
Run Code Online (Sandbox Code Playgroud)