IT 1 : VO 1 Vererbung in Java Univ.- Prof. Dr. Peter Auer Vererbung (1) • Das Konstrukt der Vererbung erlaubt es, Gemeinsamkeiten in eine Oberklasse zusammenzufassen, sodass alle Unterklassen über diese gemeinsamen Eigenschaften verfügen. • Das automatische Übernehmen von Eigenschaften der Oberklasse heißt Vererbung. – Die Unterklasse „erbt“ die Eigenschaften der Oberklasse. • Gemeinsame Eigenschaften sind vor allem Attribute und Methoden. 10.1.2011 CuP - VO 2 1 IT 1 : VO 1 Vererbung (2) • Zusätzlich zu den Eigenschaften der Oberklasse kann eine Unterklasse weitere Eigenschaften haben, bzw. die von der Oberklasse geerbte Methoden abändern („überschreiben“). • Die Unterklasse ist eine Spezialisierung der Oberklasse. Ein Objekt der Unterklasse kann überall dort verwendet werden, wo ein Objekt der Oberklasse verwendet werden kann, denn die Unterklasse behält – als Spezialisierung der Oberklasse – die Eigenschaften der Oberklasse. (Die Unterklasse ist ein „Subtyp“ der Oberklasse.) • Eine Unterklasse kann Oberklasse einer weiteren Klasse sein. Es ergibt sich dann eine Vererbungshierarchie. 10.1.2011 CuP - VO 3 Vererbung in Java • Bei der Definition der Unterklasse wird die Oberklasse angegeben: class Unterklasse extends Oberklasse { … } • Beim Erzeugen eines Objektes der Unterklasse wird – zumindest konzeptionell – zuerst ein Objekt der Oberklasse erzeugt, das dann um die Attribute der Unterklasse erweitert wird. – Ein Konstruktor der Unterklasse muss als erste Aktion einen Konstruktor der Oberklasse aufrufen. Dann erst kann der Konstruktor der Unterklasse weitere Aktionen durchführen. – Der Aufruf des Konstruktors der Oberklasse erfolgt durch super(Argumentliste). 10.1.2011 CuP - VO 4 2 IT 1 : VO 1 Die Klasse Object • Alle Klassen sind Unterklassen von Object. • In Object sind bereits einige Methoden definiert, z.B. die Methode String toString(). – Die Methode toString() liefert (automatisch) eine textuelle Repräsentation eines Objekts zurück, wenn diese benötigt wird (z.B. in System.out.println()). – Diese sollte für Objekte unterschiedlicher Klassen unterschiedlich sein, z.B. für String bzw. ArrayList. – toString() von Object liefert den Klassennamen des Objekts und seine Nummer (Hashwert) zurück. – Für andere Klassen (die Unterklassen von Object sind) kann toString() neu definiert, d.h. überschrieben werden. 10.1.2011 CuP - VO 5 Überschreiben • Das Neudefinieren einer Methode der Oberklasse in der Unterklasse heißt Überschreiben. • Die Methode der Oberklasse kann in der Unterklasse mittels super.methodenname() aufgerufen werden. – Das ist oft nützlich, wenn die Unterklasse den Aktionen der Oberklasse nur etwas hinzufügen möchte. 10.1.2011 CuP - VO 6 3