Алмазная проблема
Википедия по проблеме алмазов:
«... проблема алмаза - это неоднозначность, которая возникает, когда два класса 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();