Vererbung Mehrfachvererbung

djafix

Mitglied
Hallo allerseits,

zu dem Thema Mehrfachvererbung mit Java wurde sicherlich schon einiges geschrieben, jedoch hab ich nix direktes gefunden, was mir meine Frage beantworten kann. Deshalb schieß ich einfach mal los:

Für meine Bachelorarbeit muss ich vorerst ein System modellieren, was später mit Java implementiert werden KANN (aber nicht muss). Da ich aber sowieso zu Java tendiere, würde ich gerne wissen, wie sich das mit der Mehrfachvererbung verhält.

Also eine Klasse K kann ja immer nur von einer Oberklasse erben. Ist es dann aber möglich, dass diese Oberklasse schonmal von einer Klasse geerbt hat? Somit würde es ja eine Mehrfachverbung in horizontaler Richtung geben. Dass das in vertikaler Richtung nicht möglich ist, leuchtet mir schon ein.

Aber ist es dann Prinzipiell möglich, beispielsweise eine abstrakte Basisklasse (Audiogerät) zu erstellen, welche von einer Klasse digitalesAudiogerät spezialisiert wird und diese Klasse wird dann wieder von einer Klasse CdSpieler spezialisiert.
Ich hoffe ihr wisst wie ich es meine und könnt mir ein bisschen Licht ins Dunkel bringen.:idea:
 

Shine

Mitglied
Eigentlich kann man da nicht viel mehr sagen als: "Ja, das ist möglich".

Sagen wir mal du erstellst dir 3 Klassen. "Fahrzeug", "Auto" und "Honda"... Dann kannst du die Klasse "Auto" von der Klasse "Fahrzeug" und dann die Klasse "Honda" von der Klasse "Auto" erben lassen (das kannst du ja gerne mal mit nem kleinen provosorischen Code selber ausprobieren), eine wirkliche Mehrfachvererbung ist das in diesem Sinne allerdings nicht.
 
Zuletzt bearbeitet:

JavaMeister

Gesperrter Benutzer
Bisschen erschreckend, dass man bis zur ba das nicht einmal selber ausprobiert hat. Und um das zu verifizieren, eine frage im forum notwendig ist.
 
Somit würde es ja eine Mehrfachverbung in horizontaler Richtung geben. Dass das in vertikaler Richtung nicht möglich ist, leuchtet mir schon ein.

Aber ist es dann Prinzipiell möglich, beispielsweise eine abstrakte Basisklasse (Audiogerät) zu erstellen, welche von einer Klasse digitalesAudiogerät spezialisiert wird und diese Klasse wird dann wieder von einer Klasse CdSpieler spezialisiert.
Es ist wichtig zu verstehen, dass dies, wie Shine schon geschrieben hat, keine Mehrfachvererbung ist. Mehrfachvererbung wäre es, wenn du eine Klasse Stereoanlage hättest, die von DigitalesAudiogerät und AnalogesAudiogerät gleichzeitig erbt (weil sie ein Kassettendeck und ein CD-Spieler beinhaltet). Warum das in Java nicht vorgesehen ist, kannst du sehen, wenn du realisierst, dass diese Klasse über zwei Wege quasi doppelt von Audiogerät erbt (deren Methoden etc. ja in den beiden Audiogerät-Klassen überschrieben werden können).

Du solltest jetzt aber nicht auf den Gedanken kommen, eine "Mehrfachvererbung" so zu bilden:
Audiogerät -> digitalesAudiogerät -> AnalogesAudiogerät -> Stereoanlage
Das ist natürlich fürchterlich schlechter Code. Etwas anderes ist es, eine Mehrfachspezifizierung durch Interfaces zu ermöglichen. Hier kann eine Java-Klasse auch mehrere implementieren, weil dadurch die oben beschriebenen Probleme nicht auftreten können. Somit könntest du Vorgaben für ein AnalogesAudiogerät und ein DigitalesAudiogerät machen, die von der Stereoanlage beide implementiert werden.
 

kaoZ

Top Contributor
DDOD - Deadly Diamond Of Death

Mehrfachvererbung ist in Java nicht möglich,

benutze Interfaces als Schnittstellen zwischen mehreren Klassen.
 
Zuletzt bearbeitet:

djafix

Mitglied
Ok danke für die Antworten. Da ich hier neu bin, würde ich jetzt gerne noch wissen wo der Bedanken-Button ist :D Entweder bin ich blind oder der ist einfach nicht da....
 

Ähnliche Java Themen

Neue Themen


Oben