2013-10-25 2 views
1

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

+6

Только люди в Sun Microsystems могут ответить на этот вопрос. –

+0

Идея удаления множественного наследования для удаления сложности. – HackerGK

+1

Проблема (ну, * одна из проблем) с множественным наследованием - это конфликты имен, она не имеет ничего общего с виртуальными методами. –

ответ

2

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

0

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

+0

Да, известная как проблема с алмазом, отсюда и вопрос. – benjymous

5

James Gosling (известный как «отец» Java) сказал:

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

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

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

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

0

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

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

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

Смежные вопросы