Im Zusammenhang mit Polymorphie und Mehrfachvererbungen können "Prototypen"
von
Klassen definiert werden. Diese werden als abstrakte Klassen bezeichnet.
Aus abstrakte Klassen lassen sich
keine Objekte definieren. Sie sind nur für Vererbungen
geeignet.
In einer abstrakten Klasse gibt es
mindestens eine rein virtuelle Funktion:
class Abstrakt {
...
virtual Typ Funktion (Parameter) =0;
...
}
Wenn alle Member-Funktionen rein
virtuell sind, spricht man von abstrakten Datentypen.
Diese definieren zwar alle Schnittstellen, sind aber frei von allen Implementierungsdetails:
class ImplementAbstrakt {
...
Typ Funktion (Parameter) { tueEs(); }
...
}
Der Benutzer kann ohne die Implementierung zu kennen sagen:
class Konkret: public Abstrakt, private ImplementAbstrakt {
...
}