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();

questionAnswers(2)

yourAnswerToTheQuestion