Vererbung

Zusätzlich zu einem abstrakten Datentyp kann eine Klasse Eigenschaften durch Vererbung an andere Klassen weitergeben. Das bedeutet, dass die Datenstruktur der Superklasse in der abgeleiteten Klasse enthalten ist. Die abgeleitete Klasse kann aber weitere Daten hinzufügen. Außerdem können die Methoden der Superklasse auch mit Instanzen der abgeleiteten Klasse verwendet werden. Die abgeleitete Klasse kann weitere Methoden hinzufügen.

Die abgeleiteten Klassen können geerbte Methoden überschreiben (ersetzen). Überschreiben kann dann notwendig sein, wenn die Superklasse eine abstrakte Methode deklariert hat. Eine abstrakte Methode ist eine Methode, die deklariert ist, deren Implementierung aber fehlt. Eine Klasse mit mindestens einer abstrakten Methode nennt man abstrakte Klasse. Abstrakte Klassen können nicht instanziert werden.

Können geerbte Eigenschaften nicht überschrieben werden, so liegt Subtyping vor. Somit ist sicher, dass eine Instanz der abgeleiteten Klasse zugleich eine Instanz aller Superklassen ist.

Eine gängige Einschränkung bei objekt-orientierten Programmiersprachen ist die, dass jede Klasse nur eine (direkte) Superklasse haben kann. Lässt man diese Beschränkung fallen, spricht man von Mehrfachvererbung.

Fasst man Klassen auch als Objekte auf, stellt sich die Frage, von welcher Klasse sie Instanzen sind. Klassen, deren Instanzen ebenfalls Klassen sind nennt man Metaklassen.