Vererbung in Java Vererbung (1)

Werbung
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
Herunterladen