Konkrete Klasse
Eine (sog. konkrete) Klasse stellt in der objektorientierten Programmierung eine Art Bauvorlage für eine Reihe von ähnlichen Objekten dar. Dieser Bauplan beinhaltet verschiedene Attribute und Methoden, welche jedem Objekt ermöglichen unterschiedliche Werte zu beinhalten und Aktionen auszuführen.
Im Allgemeinen kann man sagen, dass eine Klasse dem Datentyp eines Objektes entspricht.
Da eine Klasse also nur eine Vorlage und kein eigentliches Objekt ist, belegt eine Klasse an sich auch keinen Speicher während der Ausführung.
Beispiel
Eine Klasse Fahrzeug hat die Attribute farbe und ps. Außerdem besitzt sie einen Konstruktor und die Methoden fahren() und tanken().
Einfaches Klassendiagramm:
Durch die Klasse Fahrzeug ist man nun in der Lage, verschiedene Objekte zu erzeugen. So lässt sich beispielsweise ein blaues Fahrzeug mit 120 PS und ein rotes Fahrzeug mit 210 PS erzeugen. Beide sind durch ihre Methoden in der Lage, zu fahren oder zu tanken. Die Klasse selbst dient nur als Bauvorlage.
Abstrakte Klasse
Eine Erweiterung dieser konkreten Klasse stellt die abstrakte Klasse dar. Sie hat im Grunde den selben Nutzen wie eine konkrete Klasse, mit der Ausnahme, dass sie sich nicht instanziieren lässt. Das bedeutet, es lässt sich kein Objekt dieser Klasse erstellen. Somit dient die abstrakte Klasse lediglich als Strukturelement innerhalb der Klassenhierarchie und gibt den Unterklassen bestimmte Signaturen in Form von abstrakten Methoden vor. Abstrakte Methoden besitzen nämlich keinen Rumpf und müssen von einer erbenden konkreten Klasse überschrieben werden. Überschreibt die konkrete Klasse die abstrakte Methode nicht, gilt sie selbst als abstrakt und lässt sich von da an nicht mehr instanziieren.
So ist man in der Lage für ausgewählte Klassen Signaturen zu setzen, die eingehalten werden müssen.
Beispiel
Wir haben nun eine abstrakte Klasse Fahrzeug, welche zwei abstrakte Methoden besitzt. Jede konkrete Klasse die nun von Fahrzeug erbt, muss die beiden Methoden implementieren, wenn sie weiterhin als konkret gelten möchten.
In diesem Beispiel stellt Transporter diese konkrete Klasse da. Transporter erbt von Fahrzeug und möchte sich weiterhin instanziieren lassen können. Aus diesem Grund ist sie gezwungen, die beiden Methoden zu überschreiben.