Почему Java не поддерживает множественное наследование, хотя все методы Java по умолчанию являются виртуальными?

Почему Java не поддерживает множественное наследование, хотя все методы java являются виртуальными по умолчанию? Почему проблема алмазов может возникнуть в Java?

4 ответа

Джеймс Гослинг (известный как "отец" Явы) сказал:

JAVA опускает многие редко используемые, плохо понятые, запутанные возможности C++, которые по нашему опыту приносят больше горя, чем пользы. Это в первую очередь состоит из перегрузки операторов (хотя она и имеет перегрузку методов), множественного наследования и обширных автоматических приведений.

Ссылка: http://javapapers.com/core-java/why-multiple-inheritance-is-not-supported-in-java/

Поэтому, по его словам, они просто не хотели добавлять это, поскольку считали, что это плохая идея.

PS Использование нескольких интерфейсов - это НЕ то же самое, что множественное наследование.

Алмазная проблема не может возникнуть в Java только потому, что нет возможности множественного наследования.

Я думаю, что это произвольное решение Sun ограничить ошибки разработки, возникающие в результате программирования с множественным наследованием и повышения сложности

Потому что интерфейс дает гибкость, чем конкретные классы, и у нас есть возможность реализовать несколько интерфейсов, используя один класс. По соглашению мы придерживаемся двух чертежей для создания класса. Давайте посмотрим красивое определение Java:

JAVA: A simple, object oriented, distributed, interpreted, robust, secure, 
architecture   neutral, portable, high performance, multithreaded, 
dynamic language.

Опять же, нет возможности возникновения проблемы Diamond в Java, потому что она не поддерживает множественное наследование.

Другие вопросы по тегам