2010-09-22 3 views
5

Можно создать дубликат:
Why there is no multiple inheritance in Java, but implementing multiple interfaces is allowedпочему Java не поддерживает множественное наследование

Привет всем, я новичок в Java, и когда я пытаюсь использовать множественное понятие наследования в Java его показ ошибка компиляции time.Why не поддерживает его. Я слышал о ключевом ключе интерфейса, но не знаю, почему Java поддерживает его напрямую. пожалуйста, помогите мне в этом и объясните.

+1

http://stackoverflow.com/questions/995255/why-is-multiple-inheritance-not-allowed-in-java-or-c http://stackoverflow.com/questions/2515477/why- существует-нет-множественное наследование-в-java-но-реализация-несколько-интерфейс http://stackoverflow.com/questions/3008683/why-does-java-allow-multiple-inheritance-from-interfaces-but -not-from-abstract-co http://stackoverflow.com/questions/1262447/multiple-inheritance-in-java http://stackoverflow.com/questions/1038314/alternative-of-multiple-inheritance-in-java –

ответ

15

Множественное наследование может быть очень трудно понять. Когда у вас есть множественное наследование с двумя классами, которые имеют методы в конфликтах, как вы справляетесь с этим?

Конечно, существуют решения (например, в C++), но создатели Java решили, что это способ усложнить и не совсем в философии Java (сделать разработку намного проще).

От Sun.Com,:

множественное наследование - и все проблемы, которые он генерирует - отбрасывали из Java. Желательные функции множественного наследования предоставляются интерфейсами, концептуально подобными протоколам Objective C.
Интерфейс не является определением класса. Скорее, это определение набора методов, реализуемых одним или несколькими классами. Важной проблемой интерфейсов является то, что они объявляют только методы и константы. Переменные не могут быть определены в интерфейсах.


Ресурсы:

1

Потому что, это было трудно использовать. Вместо этого у Java есть interface, что намного лучше.

21

Известна основная проблема с множественным наследованием (упоминается Колином и Рином): The Diamond Problem.

цитирую:

Проблема алмаза неоднозначность , которая возникает, когда два класса В и С наследоваться от А и класс D наследует от обоих B и C. Если метод D в вызывает метод, определенный в A (и делает не переопределяет метод), а B и C переопределили этот метод по-другому, а затем из какого класса он наследует: B или C?

+1

приятно объяснил .....+1. –