10Vererbung
Spricht man von Objektorientierung, dann fällt früher oder später der Begriff „Vererbung“. Und genau darum soll es in diesem Teil des Kurses gehen. In der Programmierung ist die Vererbung die Weitergabe von Attributen und Methoden von einer Klasse an die nächste. Lass und nochmal an das T-Shirt Beispiel denken. Diesem T-Shirt haben wir schon ein paar Attribute zugesprochen: Farbe, Marke, etc. Gehen wir nun eine Ebene höher, könnte man ein T-Shirt als ein Kleidungsstück betiteln, dabei ist jedes T-Shirt ein Kleidungsstück, aber nicht jedes Kleidungsstück ein T-Shirt. Die Klasse Kleidungsstück hat nun bestimmte Attribute, zum Beispiel eine Farbe, eine Jahreszeit und eine Marke. Ein T-Shirt teilt diese Attribute, allerdings hat ein T-Shirt weitere zusätzliche Attribute. Das könnte beispielsweise die Option sein, ein Polo Shirt zu sein. Schauen wir uns die beiden Klassen im Code an:
public class Kleidungsstueck {
String farbe;
String jahreszeit;
String marke;
public Kleidungsstueck(String farbe, String marke, String jahreszeit) {
this.farbe = farbe;
this.marke = marke;
this.jahreszeit = jahreszeit;
}
}
public class TShirt extends Kleidungsstueck {
boolean istPoloShirt;
public TShirt(String farbe, String marke, String jahreszeit, boolean istPoloShirt) {
super(farbe, marke, jahreszeit);
this.istPoloShirt = istPoloShirt;
}
}
// Listing 10.1 Vererbung von Klassen
In der Klasse ist nichts ungewohntes zu finden: Zunächst werden die Attribute definiert, danach wird ein Konstruktor erstellt, welcher die Attribute entsprechend zuweist. Die Klasse hat allerdings einige Neuerungen bekommen. Die erste Änderung ist die, dass die Klassendefinition um den Zusatz ergänzt wurde. Damit teilen wir der TShirt-Klasse mit, dass sie nun von erbt. Damit hat die Klasse Zugriff auf alle Methoden und Attribute der Klasse . Danach wird innerhalb der TShirt das Attribut ergänzt. Die Klasse besitzt ebenfalls einen Konstruktor, hier findet sich auch die nächste Neuerung. Der Konstruktor erwartet alle Parameter, welche auch der Konstruktor aus der Klasse benötigt und zusätzlich die eigenen Attribute aus TShirt. Die letzte wichtige Änderung ist der Aufruf von . Dieser macht nichts weiter, als den Konstruktor der Super-Klasse (also die Klasse von der geerbt wird) aufzurufen, deshalb müssen wir auch die geforderten Parameter des Kleidungsstueck-Konstruktors an den super Aufruf übergeben.
Das war es auch schon, du kannst nun eine Instanz der Klasse erstellen und sie besitzt sowohl die Attribute aus , als auch das eigene Attribut .
TShirt poloShirt = new TShirt("Rot", "Beispielmarke", "Sommer", true);
System.out.println("Farbe: " + poloShirt.farbe + ", Polo Shirt: " + poloShirt.istPoloShirt);
Ausgabe: Farbe: Rot, Polo Shirt: true
// Listing 10.2 Zugriff auf geerbte Attribute
Wie du siehst, kannst du auf die Attribute von zugreifen, als wären sie Teil der Klasse. Auch Methoden kannst du nach genau diesem Prinzip vererben. In der Aufgabe zu dem Teil kannst du dich daran ausprobieren.
Zusammenfassung
Die Vererbung ermöglicht die Weitergabe von Attributen und Methoden an Unterklassen
Diese Unterklassen können dann um weitere Attribute und Methoden ergänzt werden
Vererbung kommt vor allem dann zum Einsatz, wenn etwas zunächst unspezifisch definiert werden soll und später genauere Eigenschaften erhält. (z.B.: Fahrzeug -> Auto; Kleidungsstueck -> T-Shirt; Tier -> Vierbeinder-> Hund)