class Person

Werbung
Vorteile der Vererbung
• Implementation / Funktion einer Oberklasse kann zu einem
späteren Zeitpunkt „quasi von außen“ verbessert bzw. korrigiert
werden
– es wird eine entsprechende Unterklasse definiert, die die zu
ändernden Methoden und Variablen durch neue Versionen
überlagert
• Dadurch, dass Klassen durch Unterklassen in eigenen QuelltextDateien spezialisiert werden können, bleiben Programme langfristig
erweiterbar.
• Stufenweise Abstraktion der Klassenhierarchie ermöglicht die
Wiederverwendbarkeit der generelleren Klassen für andere
Projekte.
– In einzelnen Projekten werden dann speziellere Unterklassen
der eher generellen Klassen definiert.
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
1
Überlagerung (engl.: Overriding)
•
•
•
•
Eine Methode einer Unterklasse kann denselben Namen und dieselbe
Anzahl/denselben Typ der Parameter wie eine Methode einer Oberklassen
haben
Die Methode der Unterklasse überlagert die Methode der Oberklasse
Es findet keine Vererbung statt
Beispiel:
class Person {
String vorname, nachname;
void ausgeben() {System.out.println(vorname+nachname);
}
}
überlagert Methode
ausgeben in Klasse
Person
class Student extends Person {
long matrikelnr;
void ausgeben(){
System.out.println(vorname+nachname+matrikelnr);
}
}
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
2
Überlagerung
• Bei Überlagerung von Methoden spricht man von
Polymorphismus
• Überlagerte Methoden sind beim Aufruf nicht
unterscheidbar
• Frage: Welche Methode wird verwendet?
• Antwort: die der Klasse des Objekts, nicht die der Klasse
der Referenzvariablen
• Beispiel: (wie eben mit überlagerter Methode ausgeben())
Student s = new Student();
Person p = s;
p.ausgeben(); //ausgeben() von Student, nicht von Person
• Dies wird als Dynamisches Binden bezeichnet
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
3
Beispiel zur Überlagerung von Methoden
class Person {
String vorname, nachname;
void ausgeben() {
System.out.println(vorname + nachname);
}
Ruft die überlagerte
}
die
Methode Überlagert
der Oberklasse
class Student extends Person {
gleichnamige
auf (welche
bereits für die
long matrikelnr;
Methode
Ausgabe der
darin der
void ausgeben() {
Oberklasse
definierten
Variablen sorgt)
super.ausgeben();
System.out.println(matrikelnr);
}
}
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
4
Herunterladen