ダイヤモンド問題に関するウィキペディア:
「...ダイヤモンドの問題は、2つのクラスBとCがAから継承し、クラスDがBとCの両方から継承するときに発生するあいまいさです.DのメソッドがAで定義されたメソッドを呼び出す場合(およびメソッドをオーバーライドしない場合) )、そして B と C がそのメソッドを異なる方法でオーバーライドした場合、どのクラスから継承しますか: B または C?"
したがって、ダイヤモンドは次のようになります。
A
/ \
B C
\ /
D
私の質問は、そのようなクラス A がなくても、B と C が同じメソッド、たとえば foo() を宣言するとどうなるかということです。これは同じ問題ではありませんか?なぜダイヤモンド問題と呼ばれるのですか?
例:
class B {
public void foo() {...}
}
class C {
public void foo() {...}
}
class D extends B, C {
}
new D().foo();