Ja.
Eine abstrakte Klasse wird üblicherweise abstrakte Methoden enthalten. Eine abstrakte Methodendefinition besteht aus:
public
)abstract
void
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.
Überschreibt das Folgende korrekt die abstrakte Methode der Superklasse?
class Subklasse extends AbstrakteSuperklasse { public double berechne( int x, String s ) { . . . } }