Benutzer-Werkzeuge

Webseiten-Werkzeuge


klassen2:abstrakt:start

Abstrakte Klassen



Oft ist es nicht sinnvoll, Objekte einer Oberklasse zu instanzieren, weil sie "abstrakt" ist, d.h. noch nicht über alle Attribute/Methoden verfügt. Wir sehen uns dazu wieder ein einfaches Beispiel an: Die Klasse Tier besitzt ein Attribut art. Von ihr leiten wir die Unterklassen Hund und Katze ab:

Abstrakte Methoden

Jedes Tier soll eine Methode sagwas() besitzen. Ruft man die Methode für ein Objekt der Klasse Hund auf, so soll "Wau, wau!" ausgegeben werden, ruft man sie für ein Objekt der Klasse Katze auf, so soll "Miau" ausgegeben werden. Wenn wir - wie im Kapitel Casting und der Operator instanceof - die Methode sagwas() in den Klassen Hund und Katze implementieren, dann können wir sie nur aufrufen, wenn die Objektvariable vom Datentyp Hund oder Katze ist. Bei Objektvariablen vom Typ Tier müssen wir vorher mithilfe des Operators instanceof herausfinden, um welche Klasse es sich handelt und dann entsprechend casten.
Viel klarer wäre es doch, wenn die Klasse Tier eine Methode sagwas() enthalten würde, diese Methode aber erst in ihren Unterklassen mit Inhalt gefüllt wird. Das geht, wenn wir sowohl die Klasse Tier als auch die Methode sagwas() als abstract kennzeichnen:

Die Deklaration der Methode

abstract public void sagwas();

in der Klasse Tier verpflichtet alle Unterklassen von Tier, diese Methode mit genau dieser Signatur zu implementieren. Sie sorgt gleichzeitig dafür, dass man mit einer Variable vom Typ Tier dann diese Methode aufrufen kann, egal, zu welcher Unterklasse von Tier das Objekt gehört, auf das die Variable zeigt.

Eine Klasse kann nur dann abstrakte Methoden enthalten, wenn sie selbst mit dem Schlüsselwort abstract gekennzeichnet ist. Das sorgt dafür, dass keine Objekte dieser Klasse instanziert werden können (was nicht geht, weil die abstrakten Methoden ja keinen Programmtext besitzen, der ausgeführt werden könnte).

Klassendiagramm

Der UML-Standard sieht vor, dass die Bezeichner abstrakter Klassen und Methoden in Schrägschrift gesetzt werden. Vor den Klassenbezeichner kann wahlweise zusätzlich das Präfix "«abstract»" geschrieben werden.

klassen2/abstrakt/start.txt · Zuletzt geändert: 2021/05/09 00:25 von Martin Pabst