Diamentowy problem
Wikipedia o problemie z diamentami:
„... problem diamentu jest niejednoznacznością, która powstaje, gdy dwie klasy B i C dziedziczą z A, a klasa D dziedziczy zarówno z B, jak i C. Jeśli metoda w D wywołuje metodę zdefiniowaną w A (i nie zastępuje metody ), a B i C nadpisały tę metodę w inny sposób, a następnie z której klasy dziedziczy: B lub C? ”
Diament wygląda tak:
A
/ \
B C
\ /
D
Moje pytanie brzmi: co się stanie, jeśli nie ma takiej klasy A, ale ponownie B i C deklarują tę samą metodę, powiedzmy foo (). Czy to nie ten sam problem? Dlaczego nazywa się to problemem diamentu?
Przykład:
class B {
public void foo() {...}
}
class C {
public void foo() {...}
}
class D extends B, C {
}
new D().foo();