Warum kann man nur von einer Klasse erben?

finesim

Mitglied
Hallo liebes Forum,
Ich bin zur Zeit dabei ein Lernprogramm für Griechisch zu schreiben, und als ich dann einen Lektionsauswahldiolog schreiben wollte, der von meiner abstrakten Grundform und JDialog erbt,
ging das nicht und ich suchte bei Google und dort stand, dass das ein Designfehler in Java ist.
Ist das wirklich ein Fehler oder gewollt? Wenn es nicht gewollt ist, wird es dann verbessert?
 
Das ist kein Fehler sondern ein Feature. In Java hat man auf Mehrfachvererbung verzichtet, da man sich hiermit viele Probleme einhandeln kann.
 
Das einzige was geht wäre sowas:

NummerEins extends JPanel

NummerZwei extends NummerEins

NummerDrei extends NummerZwei


So hat man in NummerDrei alle Mehtoden/Variabeln von:
- JPanel
- NumemrEins und
- NummerZwei

Nicht schön, man sollte auch drauf verzichten, aber so isses....
 
siehe etwas
Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 6.8 Vererbung
z.b.
Nehmen wir an, die Klassen O1 und O2 deklarieren beide eine öffentliche Methode f(), und U ist eine Klasse, die von O1 und O2 erbt. Steht in U ein Methodenaufruf f(), ist nicht klar, welche der beiden Methoden gemeint ist. In C++ löst der Scope-Operator 🙂🙂 das Problem, indem der Entwickler immer angibt, aus welcher Oberklasse die Funktion anzusprechen ist.

wobei das mit Interfacen in Java auch nicht viel besser aussieht,
außer dass man vielleicht noch den Fehler übersieht, die Methode für das eine Interface mit Bedeutung 1 implementiert,
dann aber nicht bedenkt dass sie im anderen Interface was ganz anderes machen soll

theoretisch könnte Java auch die Mehrfachvererbung zulassen nur nur meckern sobald es Probleme gibt
 
Zuletzt bearbeitet von einem Moderator:
zb wenn a und b die selbe methode haben, wird dann von a oder b die aufgerufen?

Wenn dein object c a und b extended, wird dann erst der constructor von a oder von b aufgerufen? Was wenn beim entladen(zb datenbankverbindungen) a vor b entladen werden muss, da a was von b bracht zum sauberen abschluss.

Die liste lässt sich lange weiterführen.
Ich empfehle dir Delegation und Interfaces anzugucken, damit kann man funktional das selbe erreichen.
 
Die Mehrfachvererbung, wie sie in C++ möglich ist, wird manchmal

"Deadly Diamond of Death," genannt, denn wenn man den Mehrfach-Ableitungsprozess
grafisch darstellt, sieht das so bischen nach einem Diamant aus.

Jedenfalls wird es als böse angesehen!
 

Zurück
Oben