Eine gute Antwort wäre:

Da die Klasse Videoband weder die Variable regisseur noch bewertung hat, kann ihre anzeigen() Methode sie nicht verwenden.

Methoden überschreiben

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. (Denken Sie daran, dass die Signatur einer Methode der Name der Methode und ihre Parameterliste ist.)

Ein Objekt vom Typ der Superklasse wird die Methode enthalten, die in der Definition der Superklasse gegeben ist. Ein Objekt vom Typ der Subklasse wird die Methode enthalten, 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

FRAGE 15:

Enthält die Definition von anzeigen() in der Spielfilm-Klasse Code, der bereits geschrieben wurde?

Inhaltsverzeichnis