Da die Klasse Videoband
weder die Variable regisseur
noch bewertung
hat,
kann ihre anzeigen()
Methode sie nicht verwenden.
Wir brauchen eine neue anzeigen()
Methode in der Klasse Spielfilm
:
// der Klasse Spielfilm hinzugefügt
public void anzeigen()
{
System.out.println(titel + ", " +
laenge + " Min. verfuegbar:" + vorhanden);
System.out.println("Regisseur: " +
regisseur + " " + bewertung);
}
Auch wenn die Superklasse eine anzeigen()
Methode hat,
wird jetzt die neue Definition von anzeigen()
in der Subklasse die Version der
Superklasse überschreiben.
Die Methode einer Subklasse überschreibt die Methode einer Superklasse, wenn sie die gleiche Signatur wie die Methode einer Superklasse hat. Jetzt hat die Superklasse ihre Methode, und die Subklasse hat ihre eigene Methode mit der gleichen Signatur.
Die Signatur einer Methode ist der Name der Methode und Typ, Anzahl und Reihenfolge ihrer Parameter.
Ein Objekt vom Typ der Superklasse wird die Methode ausführen, die in der Definition der Superklasse gegeben ist. Ein Objekt vom Typ der Subklasse wird die Methode ausführen, die in der Definition der Subklasse gegeben ist.
Mit der Änderung in der Klasse Spielfilm
wird das
folgende Programm die volle Information für beide Artikel ausgeben.
class VideoVerleih { public static void main ( String args[] ) { Videoband artikelA = new Videoband( "Microcosmos", 90); Spielfilm artikelB = new Spielfilm( "Jaws", 120, "Spielberg", "PG"); artikelA.anzeigen(); artikelB.anzeigen(); } }
Die Zeile artikelA.anzeigen()
ruft die anzeigen()
Methode auf,
die in Videoband
definiert ist, und
die Zeile artikelB.anzeigen()
ruft die anzeigen()
Methode auf,
die in Spielfilm
definiert ist.
Microcosmos, 90 Min. verfuegbar: true Jaws, 120 Min. verfuegbar: true Regisseur: Spielberg PG
Enthält die Definition von anzeigen()
in der Spielfilm
-Klasse
Code, der bereits geschrieben wurde?