2010-09-22 16 views
5

Mögliche Duplizieren:
Why there is no multiple inheritance in Java, but implementing multiple interfaces is allowedwarum Java nicht unterstützt Mehrfachvererbung

hallo alle, ich bin neu in Java und wenn ich versuche, bin in Java Mehrfachvererbung Konzept zu nutzen, um seine Vorführung ein Kompilierzeitfehler. Warum java unterstützt es nicht. Ich hörte über Schnittstellenschlüsselwort aber wissen nicht, warum Java es direkt stützen. Bitte hilf mir dabei und erkläre es.

+1

http://stackoverflow.com/questions/995255/why-is-multiple-inheritance-not-allowed-in-java-or-c http://stackoverflow.com/questions/2515477/why- there-is-no-multiple-vererbung-in-java-aber-implementing-multiple-interface http://stackoverflow.com/questions/3008683/why-does-java-allow-multiple-inheritance-from-interfaces-aber -not-from-abstract-co http://stackoverflow.com/questions/1262447/multiple-inheritance-in-java http://stackoverflow.com/questions/1038314/alternative-of-multiple-inheritance-in-java –

Antwort

15

Mehrfachvererbung kann wirklich schwierig zu verstehen sein. Wenn Sie eine Mehrfachvererbung mit zwei Klassen haben, die Methoden in Konflikten haben, wie gehen Sie damit um?

Natürlich gibt es Lösungen (in C++ zum Beispiel), aber die Entwickler von Java entschieden, dass es viel zu kompliziert war und nicht wirklich in der Java-Philosophie (die Entwicklung viel einfacher zu machen).

Von sun.com:

Mehrfachvererbung - und alle Probleme, die es erzeugt - wurde von Java verworfen. Die wünschenswerten Merkmale der Mehrfachvererbung werden durch Schnittstellen bereitgestellt, die konzeptionell den Objective C-Protokollen ähnlich sind.
Eine Schnittstelle ist keine Definition einer Klasse. Es ist vielmehr eine Definition einer Reihe von Methoden, die von einer oder mehreren Klassen implementiert werden. Ein wichtiges Problem von Schnittstellen ist, dass sie nur Methoden und Konstanten deklarieren. Variablen dürfen nicht in Schnittstellen definiert sein.


Ressourcen:

1

Da war es schwer, es zu benutzen. Stattdessen hat Java interface was ist viel bessere Lösungen.

21

Das Hauptproblem mit Mehrfachvererbung (von Colin und Rin angedeutet) ist bekannt ist The Diamond Problem.

I zitieren:

Der Diamant Problem ist eine Zweideutigkeit dass, wenn zwei Klassen B und C vererben A entsteht, und die Klasse D von sowohl B als auch C. erben Wenn ein Verfahren in D ruft eine in A definierte Methode auf (und überschreibt die Methode nicht), und B und C haben diese Methode anders überschrieben, und von welcher Klasse erbt: B, oder C?

+1

schön erklärt .....+1. –

Verwandte Themen