Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Überschreiben von Methoden, Polymorphismus
Im folgenden Beispiel sind die Klassen Rechteck
und Kreis
Unterklassen der Klasse Figur
. Letztere besitzt ein Attribut Farbe
und eine Methode schreibeDaten()
mit der grundlegenden Funktionalität, diese Farbe auszugeben. Es ist nicht sinnvoll, Objekte der Klasse Figur
zu instanzieren, daher haben wir die Klasse als abstract
deklariert.
abstract class Figur { String farbe; public Figur(String farbe) { this.farbe = farbe; } public void schreibeDaten() { println("Farbe: " + farbe); } }
Die Klasse Rechteck
ist eine Unterklasse der Klasse Figur
und besitzt über das Attribut Farbe
hinaus noch die Attribute Breite
und Länge
. Die Methode schreibeDaten()
der Klasse Figur ist für Rechteck-Objekte nicht mehr hinreichend, da bei diesen Objekten auch die Länge und die Breite ausgegeben werden soll.
Überschreiben von Methoden
Wir schreiben in die Klasse Rechteck
daher eine weitere Methode schreibeDaten()
mit derselben Signatur (d.h. demselben Bezeichner, denselben Parametertypen und demselben Rückgabedatentyp) wie die Methode der Oberklasse Figur. Man sagt: "Wir überschreiben die Methode schreibeDaten()
der Klasse Figur
in der Klasse Rechteck
."
class Rechteck extends Figur { double breite; double höhe; public Rechteck(String farbe, double breite, double höhe) { super(farbe); this.breite = breite; this.höhe = höhe; } public void schreibeDaten() { super.schreibeDaten(); println("Breite: " + breite, Color.lightblue); println("Höhe: " + höhe, Color.lightblue); } }