zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite

Antwort:

Nein. Es ist ein Fehler, wenn eine Subklasse eine Methode mit der gleichen Signatur wie die der Superklasse, aber mit einem anderen Rückgabewert definiert.

Mehr Übung

Nicht-abstrakte Subklassen müssen die abstrakten Methoden ihrer Superklasse überschreiben. Hier ist unsere Situation:

abstract class AbstrakteSuperklasse
{
  public abstract int berechne(int x, String s);
}

class Subklasse extends AbstrakteSuperklasse
{
     // berechne() Methode der Subklasse
}

Wir betrachten die folgenden Möglichkeiten. Was werden die neuen Definitionen tun? Die Methode der Superklasse überschreiben, eine zusätzliche Methode definieren oder fehlerhaft sein? (Wenn die Definition eine zusätzliche Methode definiert, dann setzen wir voraus, dass die erforderliche Methode ebenfalls definiert ist.)

In der Subklasse definierte MethodeÜberschreibt, zusätzliche Methode oder Fehler?
public int berechne( int x, String s ){ . . . }
public int berechne( int stuff, String str ){ . . . }
public int Berechne( int x, String s ){ . . . }
public int berechne( String s, int x){ . . . }
public double berechne( int x, String s){ . . . }

 

FRAGE 4:

Angenommen eine Subklasse definiert nur eine Methode und, dass die Methode den gleichen Namen wie die abstrakte Methode der Superklasse hat, aber mit einer anderen Signatur. Muss die Subklasse abstrakt sein?