zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite

Antwort:

Ja.

Abstrakte Methoden überschreiben

Eine abstrakte Klasse wird üblicherweise abstrakte Methoden enthalten. Eine abstrakte Methodendefinition besteht aus:

Der Signatur folgen weder geschweifte Klammern noch ein Methodenkörper. Hier ist die abstrakte Klasse AbstrakteSuperklasse mit der abstrakten Methode berechne():

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

Wenn eine Klasse eine oder mehrere abstrakte Methoden hat, muss sie als abstract deklariert werden. Eine abstrakte Klasse kann Methoden haben, die nicht abstrakt sind (die übliche Art von Methoden). Diese Methoden werden von den Subklassen in der üblichen Weise geerbt.

Eine nicht-abstrakte Subklasse einer abstrakten Superklasse muss jede der abstrakten Methoden ihrer Superklasse überschreiben.

Diese Regeln sind nicht so schlimm wie sie scheinen. Nachdem Ihr eine Weile mit abstrakten Klassen gearbeitet habt, werden Euch die Regeln klar sein. Hier ist eine Subklasse von AbstrakteSuperklasse:

class Subklasse extends AbstrakteSuperklasse
{
    public int berechne( int x, String s )
    { . . . }
}

Die Methode berechne() der Subklasse überschreibt korrekt die abstrakte Methode der Superklasse.

FRAGE 3:

Überschreibt das Folgende korrekt die abstrakte Methode der Superklasse?

class Subklasse extends AbstrakteSuperklasse
{
    public double berechne( int x, String s )
    { . . . }
}