Eine gute Antwort könnte sein:

Da die Klasse VideoTape weder die Variable director noch rating hat, kann ihre show() Methode sie nicht verwenden.

Methoden überschreiben

Wir brauchen eine neue show() Methode in der Klasse Movie:

// der Klasse Movie hinzugefügt
public void show()
{
  System.out.println( title + ", " + length + " Min. verfuegbar:" + avail );
  System.out.println( "dir: " + director + "  " + rating );
}

Auch wenn die Superklasse eine show() Methode hat, wird jetzt die neue Definition von show() in der Subklasse die Version der Superklasse überschreiben.

Die Methode einer Subklasse überschreibt die Methode einer Superklasse, wenn Sie dieselbe Signatur wie die Methode einer Superklasse hat. Jetzt hat die Superklasse ihre Methode und die Subklasse hat ihre eigene Methode mit derselben 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 Movie wird das folgende Programm die volle Information für beide Artikel ausgeben.

class TapeStore
{
  public static void main ( String args[] )
  {
    VideoTape item1 = new VideoTape("Microcosmos", 90 );
    Movie     item2 = new Movie("Jaws", 120, "Spielberg", "PG" );
    item1.show();
    item2.show();
  }
}

Die Zeile item1.show() ruft die show() Methode, die in VideoTape definiert ist auf, und die Zeile item2.show() ruft die show() Methode, die in Movie definiert ist auf.

Microcosmos, 90 Min. verfuegbar:true
Jaws, 120 Min. verfuegbar:true
dir: Spielberg PG

FRAGE 15:

Enthält die Definition von show() in der Movie Klasse Code, der bereits geschrieben wurde?