So kannst du Java Superklassen mit dem Vererbungsbaum entwerfen
Schlagwörter: Java Klasse, Java Vererbung


Vererbungsbaum in Java – klingt erstmal komisch.
Dennoch wird dies so bezeichnet.
Gemeint sind damit – die einzelnen Hierarchiestufen oder Vererbungsebenen – von der Superklasse bis runter zu den Kindklassen.
Wie sieht das nun konkret aus?
Vererbung bedeutet:
Du definierst einen allgemeinen Typen – zB. Möbel
Und dann implementierst du eine Unterklasse, welche die Oberklasse um bestimmte Attribute und Methoden erweitert.
Zum Beispiel Schrank.
Der Schrank ist ein spezielles Möbelstück und erweitert die Klasse Möbel um zusätzliche Eigenschaften und Methoden.
Je nach Design deines Programmes kannst du unzählige Unterklassen entwickeln.
Zum Beispiel kann auch die Klasse Bett von Möbel erben.
Oder Apothekerschränke erben von der Klasse Schrank.
Du siehst die Möglichkeiten sind wahrscheinlich unbegrenzt.
Doch wie findet man nun die geeignete Oberklasse zu einem bestimmten Objekt?
Wie könnte ein schickes Design in einem ersten Programmentwurf aussehen?
In diesem Beitrag möchte ich dir ein Instrument vorstellen.
Dieses Werkzeug soll dir dabei helfen, Ober- und Unterklassen besser zu trennen.
Es hilft dir außerdem die richtige Abstraktion zu den einzelnen Objekten besser zu verstehen.
Am Anfang ist der ganze Java Vererbungskram etwas verwirrend
Schau dir dieses Bild einmal genauer an!

Nice, oder?
Aber was siehst du?
Ganz Klar – schicke Frau hält ein Glas. Neben ihr steht ein Tisch mit allerlei Zeugs.
Wenn du jetzt ein Java Programm schreiben solltest, welches ein schicke Frau mit Glas simuliert – welche Vererbungshierarchien und Typen würdest du implementieren?
In welchem Verhältnis steht die Frau zum Glas?
Klar sie hält es in der Hand.
Doch wie würde es im Programm aussehen?
Ganz konkret:
Erbt die Klasse Frau von der Klasse Glas?
Oder erbt stattdessen die Klasse Glas von der Klasse Frau?
Na was denkst du?
Ich frage deshalb, weil viele Java Anfänger die tollen Vererbungsfeatures kennenlernen.
Und dann werden Typen gebildet. Es wird munter drauf los vererbt.
Und zum Schluss wird festgestellt, dass die verschiedenen Objekttypen eigentlich gar nicht zu einander passen.
Also dann!
Glas von Frau oder Frau von Glas?
Sorry, aber ich gebe dir in diesem Moment noch keine konkrete Antwort.
Stattdessen lass uns die Antwort doch zusammen finden.
Beim Java Vererbungsbaum Entwurf – solltest du immer mit einer Frage beginnen.
Die Frage, welche du dir stets stellen solltest, lautet:
„Ist es ein(e)?“
An unserem Beispiel lautet die Frage dann:
Ist die Frau ein Glas?
Oder ist das Glas eine Frau?
Es stimmt natürlich beides nicht.
Somit stehen beide Objekte in keinem Vererbungsverhältnis.
Wenn du jetzt Frauen in einem Java Programm simulieren möchtest, gehst du noch einen Schritt weiter.
Du stellst dir immer die Frage: Ist jede Frau ein…..?
Somit ist klar, dass der Oberbegriff für Frauen nicht Glas ist.
Und natürlich auch niemals sein kann.
Eine Klasse Frau könnte stattdessen von einer Klasse Mensch erben.
Denn hier funktionieren die Fragen:
- Ist die Frau ein Mensch? – Ja na klar
- Und ist jede Frau ein Mensch? – Auch dies ist zu bejahen.
Somit ist klar, die Superklasse einer Klasse Frau kann nur Mensch sein.
Wenn du jetzt in einem Java-Programm nur Frauen, welche Sekt trinken – simulierst.
Dann brauchst du die Oberklasse Mensch nicht.
Wenn aber, stattdessen noch smarte Männer in das Programm sollen – Dann macht eine Menschenklasse wieder Sinn.
Hier ein Beispiel und ein bisschen Training zum richtigen Design so eines Java Vererbungsbaumes.
Ich werfe einfach mal ein paar Begriffe rein und lege mal ein mögliches Design fest:
- Superklasse Kühlschrank
- Kindklasse Eis erbt von der Superklasse
- Kindklasse Wurst erbt ebenfalls von der Klasse Kühlschrank
- Und auch die Kindklasse Cola würde erben.
Na wie sieht es aus?
Wer erbt von wem?
Ist dieses Super-Kindklassen-Design so in Ordnung?
Hält dieses Klassendesign der „IST-ES-BEDINGUNG“ stand?
Also dann:
- Ist Eiscreme ein Kühlschrank?- Oh Gott – NEIN
- Ist Wurst ein Kühlschrank?- Ebenfalls Nein
- Ist Cola ein Kühlschrank? – Wieder Nein.
Meine Fragen klingen schon ziemlich blöd, oder?
Dennoch beginnen viele Java Anfänger genau so Klassen zu entwerfen.
Sie sind so überwältigt und begeistert von dieser ganzen Klassenableitung und der damit verbundenen Möglichkeit, dass alles -aber wirklich alles – in einer Vererbungslinie gesetzt wird.
Wie könnte man stattdessen die Klassen entwerfen?
Kühlschrank bleibt Kühlschrank.
Wenn mehr Küchengeräte in das Programm kommen sollen, könnte der Kühlschrank ein spezielles Küchengerät sein.
Und dann könnte der Kühlschrank eine Unterklasse bzw. Kindklasse von Küchengeräte sein.

Okay, überprüfen wir das Design bis hierher?
- Ist ein Kühlschrank ein Küchengerät? – ja, na klar.
- Und ist jeder Kühlschrank ein Küchengerät? – Ebenfalls ja.
Das Design würde also passen.
Ein Kühlschrank könnte somit von der Superklasse „Küchengeräte“ erben.
Wie sieht der Rest aus?
Welcher Sammelbegriff fällt dir zu Eis, Wurst und Cola ein?
Oder gibt es vielleicht kein Sammelbegriff?
Wie wäre es mit Lebensmittel?

Überprüfen wir auch das:
- Ist Eis ein Lebensmittel und ist jede Eiscreme ein Lebensmittel? – Logisch, na klar.
- Und ist Wurst auch ein Lebensmittel? – Ebenfalls ja.
- Zu guter Letzt: Ist die Cola ein Lebensmittel? – Ja
Die Superklasse Lebensmittel würde somit ebenfalls für diese drei Kindklassen zutreffen.
Zusammenfassung:
- Java Vererbung findet nicht automatisch statt, nur weil ein Objekt mit einem anderen Objekt interagieren soll.
- So ein Java Vererbungsbaum ist stattdessen eine „IST-ES-Beziehung“.
- Du solltest dir also immer die konkreten Fragen stellen:
Ist dieses Objekt auch ein Objekt der Superklasse?
Und ist jedes Objekt auch ein Objekt dieser Superklasse?
Ähnliche Beiträge
Schlagwörter: Java Instanzen, Java Klasse, Java Programmierung, Java Variablen
Bei der Java Programmierung unterscheidet man drei Arten von Variablen. Als erste Gruppe sind die lokalen Variablen zu nennen. Auf diese gehe ich in einem separaten Artikel ein. Mich interessieren die zwei anderen Variablentypen. Zum einen existieren Klassenvariablen. Und dann sind da noch die Instanzvariablen. Wo liegt der Unterschied zwischen […]
Schlagwörter: Eclipse Programmierung, Java Klasse, Java Programmierung
Java Klassen sind Baupläne für Java Objekte. Und da Java eine objektorientierte Programmiersprache ist, sind Java Klassen somit ein elementarer Bestandteil. In diesem Beitrag möchte ich dir zeigen, wie du eine Java Klasse in Eclipse erstellen kannst. Ich möchte dir außerdem zeigen, was physikalisch in deinem Projekt passiert. Ganz zum […]
Schlagwörter: Java Klasse, Java Vererbung
Bei der Java Vererbung gibt es zwei Klassenarten bzw. -stufen. Die Superklassen, welche einen allgemeinen Typen darstellen Und die spezielleren Unterklassen, welche die Superklasse um bestimmte Funktionen erweitern. Jetzt ist dieses ganze „Der-erbt-von-dem-Konzept“ mitunter sehr schwierig darzustellen. Zum Beispiel in einem Werkzeugkoffer. In einem Werkzeugkoffer befinden sich sämtliche Werkzeuge, von […]
Schlagwörter: Java Instanzen, Java Klasse, Java Methoden, Java Programmierung
In einen der letzten Beiträge habe ich dir gezeigt, wie du eine Klasse anlegen kannst. Ich habe die Klasse „Mensch“ oder „Human“ angelegt und wir haben die erste Instanzvariable implementiert. Dein Code sollte jetzt so aussehen: public class Human { int size=156;//size in centimeter } In diesem Beitrag werde ich […]
Schlagwörter: Java Klasse
In diesem Beitrag geht es um eine spezielle Java Klasse. Die Klasse nennt sich Java Math. Diese ist in der Standardbibliothek von Java enthalten. Warum solltest du diese Klasse kennen? Die Math Klasse bietet dir einen Menge Methoden an, welche zur Berechnung von mathematischen Gleichungen ganz hilfreich sind. Aber auch […]
Schlagwörter: Java Klasse, Java Programmierung
Utility Java Klassen – was ist das? Man nennt diese auch Hilfsklassen von Java. Diese Utility Klassen sind Java Klassen, welche lediglich Methoden und Konstanten anbieten. Am Beispiel: Die Klasse Math ist so eine klassische Utility Klasse. Wozu braucht man solche Klassen? Diese Klassen sind so etwas wie ein Werkzeugkoffer […]
Schlagwörter: Java Instanzen, Java Klasse, Java Vererbung
Im letzten Beitrag habe ich dir das Java Vererbung Konzept an einem Beispiel vorgestellt. In dem Beispiel-Rollenspiel gab es Klassen zu Helden und Superhelden. Ich habe dir die Vererbungshierarchien theoretisch erläutert. Jetzt geht es ans Praktische. In diesen Beitrag lernst du: Wie du bestehende Java Klassen erweiterst Wie du Objekte […]
Schlagwörter: Java Klasse, Java Programmierung
Java ist eine objektorientierte Programmiersprache. Was heißt das? Ja… Anscheinend hat es etwas mit Objekten zu tun. Also was ist ein Objekt? Ein Objekt ist ein bestimmtes Konstrukt im Programm. Bauen wir ein Spiel. Ein Grafik-Adventure. Du kennst das. Ein Held wird in eine bestimmte Spielwelt hinein gesteckt. Der Held […]
Schlagwörter: Java Instanzen, Java Klasse, Java Programmierung, Java Variablen
Ja, ich fange sämtliche Artikel so an. Und du weißt es mittlerweile. Aber die Java Klassen stellen Baupläne für die Objekte dar, welche du erschaffen willst. Und in so einem Bauplan oder einer Gebrauchsanweisung brauchst du zwingend bestimmte Eigenschaften. Ich habe dir ja im letzten Artikel gezeigt, wie du eine […]
Schlagwörter: Java Klasse
Die Java Klassen Initialisierung durchläuft zwei Phasen. Diese beiden Phasen sind im Grunde genommen, wie die Phasen 2 und 3 bei der Instanz-Initialisierung.
Schlagwörter: Java Instanzen, Java Klasse, Java Programmierung
Lass uns jetzt ein paar Java Objekte erstellen. Im letzten Beitrag habe ich dir gezeigt, was nötig ist um ein Java Programm überhaupt zu starten. Ich habe dir gezeigt, wie du eine zweite Klasse anlegst und die main Methode implementierst. Du hast gesehen, dass die Anweisung, welche wir in die […]
Schlagwörter: Java Programmierung, Java Vererbung, Vererbung
Java ist eine objektorientierte Programmiersprache. Und das bedeutet nicht nur, dass du Objekte einer Java Klasse erzeugen kannst. Es bedeutet auch, dass Java Klassen von anderen Klassen erben können. Wieso das Ganze? Stell dir einmal ein Rollenspiel vor. Wie würdest du ein Rollenspiel entwerfen? In einem Rollenspiel gibt es magische […]
Schlagwörter: Java Klasse, Java Programmierung
Java ist eine objektorientierte Programmiersprache und dieses Konzept setzt auf Java Klassen. Diese Aussage nimm bitte jetzt erst einmal so hin. Ich werde im Laufe des Artikels den Zusammenhang herstellen.
Schlagwörter: Java Instanzen, Java Klasse
Die Instanzierung von Java Klassen verhindern. Was heißt das? Instanzen sind die Objekte einer Java Klasse. Und Instanzieren oder Instanzierung heißt nichts anderes, als Objekterstellung. Aber was soll das? Oder mal anders gefragt: Wieso sollte man verhindern, dass eine Java Klasse – Objekte erstellen kann? Schließlich sind doch Objekte der […]
Schlagwörter: Java Programmierung, Java Vererbung
„Manchmal findet Java Vererbung auch zwischen Einkaufstüten und Polizeiautos statt“ Irrer Titel, oder? Aber mal Hand aufs Herz. Was haben eigentlich eine Einkaufstüte und ein Polizeiwagen gemeinsam? Ich verrate dir etwas: Du kannst die Verbindung nicht erkennen, denn ich habe dir nicht alles verraten. Es fehlt noch ein wichtiger Aspekt […]
Schlagwörter: Java Instanzen, Java Klasse
Wie kannst du die Instanzen der Java Klassen zählen? Ganz einfach. Am besten ist es, wir bleiben beim Einführungsbeispiel zu den Java Klassen. Und ich wähle die Klasse „Monster“. Um es einfach zu halten, soll auch der Programmstart durch die Klasse erfolgen. Die Klasse bietet somit eine main-Methode an.
Schlagwörter: Java Klasse, Java Vererbung
Man kann die ganze Java Vererbung für bestimmte Klassen ausschließen bzw. verhindern oder verbieten. Was soll das? Für bestimmte Java Klassen soll die Vererbung ausgeschlossen werden. Es soll also verhindert werden, dass Elternklassen – Kindklassen bekommen können. Klingt ein bisschen wie Verhütung, oder? Denn wie auch im echten Leben, können […]
Schlagwörter: Java Konstruktor, Java Polymorphie, Java Vererbung
Klassen sind Baupläne für Java Objekte. Java Konstruktoren sind ganz konkrete Baupläne für deine Objekte. In einen der letzten Beiträge zur Java Vererbung, habe ich dir gezeigt – was polymorphe Arrays sind und wie du diese anlegst. Dazu hatten wir das Beispiel mit den Kleidungsstücken. Spinnen wir dieses Beispiel einfach […]
Schlagwörter: Java Klasse, Java Methoden, Java Strings
In einen der letzten Beiträge haben wir darüber gesprochen, dass Java Strings – Objekte sind. Dass Strings in allen Programmen äußerst häufig vorkommen Und dass sich deshalb Referenzvariablen String-Objekte im String Pool teilen. Das Konzept hinter dem String-Pool ist die Teilung der Ressourcen. Und das bedeutet: Weniger Objekte – mehr […]
Schlagwörter: Java Instanzen, Java Klasse, Java Vererbung
Java Vererbung hat nichts mit Biologie zu tun. Die Genetik besagt, dass bestimmte Merkmalsausprägungen von den Eltern auf die Kinder übergehen. Solche Merkmalsausprägungen sind: die Hautfarbe die Haarfarbe die spezifische Größe und weitere körperliche Merkmale. Und in Java – was ist da Vererbung? Lass es uns herausfinden. Was erwartet dich […]
Schlagwörter: Java Klasse, Java Programmierung
Datum und Uhrzeit mit Java. – Wie geht das? Es gibt verschiedene Möglichkeiten das Datum und auch die Uhrzeit in Java darzustellen. Eine Möglichkeit bietet die Java Klasse Calendar. Lass uns einmal einen Blick hinein werfen.
Schlagwörter: Java Methoden, Java Polymorphie, Java Vererbung
In Deutschland entstehen jeden Tag tolle Geschichten. So wie diese hier…. Die größte Turmuhr der Welt, die Makkah Clock, steht in Saudi – Arabien. Und zwar direkt in Mekka. Hier ein paar Eckdaten zur Uhr: Höhe des Turmes 601 m. Das Ziffernblatt der Turmuhr hat einen Durchmesser von 43 Meter […]
Schlagwörter: Java Instanzen, Java Klasse, Java Übungen
In dieser Java Übung, wirst du ein Objekt erstellen.
Schlagwörter: Eclipse Programmierung, Java Keyword, Java Klasse, Java Programmierung
Es macht durchaus Sinn deine Java Klassen in verschiedenen Paketen zu organisieren. Wieso? Es sprechen mehrere Gründe dafür: Du kannst doppelte Klassennamen verwenden Du kannst deinen Code oder deine Klassen inhaltlich trennen Du kannst Hierarchien abbilden. Und genau um diese Dinge geht es in diesem Beitrag