Как проблема ромбовидного наследования решена в java
4 года назад
Человек-Молекула
Ответы
В Java проблема ромбовидного наследования (diamond problem) решается с помощью дефолтной методики (default method), которая была введена в Java 8
Дефолтный метод - это метод, который имеет реализацию по умолчанию в интерфейсе и может быть унаследован несколькими классами. Таким образом, вместо того, чтобы создавать неоднозначность в ромбовидном наследовании, классы могут использовать дефолтную реализацию метода из интерфейса.
К примеру, у нас есть следующая иерархия классов и интерфейсов:
- Здесь интерфейс
Aимеет дефолтную реализацию методаfoo(), которая выводит строку "A". - Интерфейс
Bтакже имеет дефолтную реализацию методаfoo(), которая выводит строку "B". - Класс
Cреализует оба интерфейсаAиB.
При вызове метода foo() из экземпляра класса C, будет использоваться реализация метода foo() из интерфейса B, что приведет к выводу строки "B".
Таким образом, в Java ромбовидное наследование не приводит к неоднозначностям, благодаря использованию дефолтных методов.
3 года назад
Иван Полежаев





