Virtualität (4/4)

abstrakte Basisklassen

In der Klasse grafikobjekt ist sicher schon die Definition

  class grafikobjekt
  {
  // ...
    public:
      virtual void zeichne() = 0; 
      virtual void loesche() = 0;
      // ...
  };
Es handelt sich hierbei um eine Vordefinition der Methoden mit der Nullfunktion. Durch diese Definition wird die gesamte Klasse zu einer sogenannten abstrakten Klasse. Insbesondere kann von dieser Klasse keine Instanz gebildet werden. Eine Anweisung wie
grafikobjekt gr;  // Fehler!! grafikobjekt ist abstrakt
ist also nicht erlaubt.

Sinn abstrakter Klassen ist, daß die entsprechenden Methoden in abgeleiteten Klassen definiert werden müssen, um eine Instanzenbildung zuzulassen. Das Schlüsselwort virtual ist zwingend notwendig um einer Methode die Nullfunktion zuzuweisen.

Anwendungsmöglichkeiten für abstrakte Klassen sind z.B. das definierte Grafikobjekt, welches Grundfunktionen und -elemente eines Grafikobjekts bereitstellt. Es macht aber keinen Sinn eine Instanz dieser Klasse zu erzeugen, da das entsprechende Objekt nichts repräsentieren würde.