Abstrakte Klassen

Wenn Sie das Schlüsselwort abstract vor einer Funktion verwenden, so darf diese Funktion keinen Funktionsrumpf beinhalten. Dieser muss dann erst zwingend durch Unterklassen zur Verfügung gestellt werden. Eine Klasse, die mindestens eine abstrakte Funktion enthält, muss auch selbst als abstract gekennzeichnet werden. Hierbei ist zu beachten, dass von abstrakten Klassen keine Objekte gebildet werden können. Nur von den konkreten Klassen, die von dieser abstrakten Klasse erben und die abstrakten Methoden dann implementieren, können Objekte gebildet werden. In dem folgenden Beispiel wird unsere Klassenhierarchie um eine Ebene erweitert. Eine weitere abstrakte Oberklasse Fahrzeug wird eingefügt. Die abstrakte Methode fahren() wird dann in Auto implementiert:

Manchmal macht es Sinn, abstrakte Klassen zu deklarieren, die nur aus abstrakten Funktionen bestehen, welche dann durch eine implementierende Klasse bereitgestellt werden sollen. Für diesen Sonderfall existieren in PHP die sogenannten Interfaces, auch Schnittstellen genannt. Ein solches Interface bekommt das Schlüsselwort interface statt class. Es ist automatisch abstrakt, genauso wie alle seine Funktionen abstrakt sind. Zusätzlich sind die Funktionen automatisch auch öffentlich. Das Schlüsselwort abstract muss entfallen. In der implementierenden Klasse ist implements statt extends zu schreiben:

Interfaces können von anderen Interfaces erben und diese so erweitern. Zusätzlich ist es möglich, dass eine Klasse nicht nur ein Interface implementiert, sondern gleich mehrere. Diese werden durch Kommata getrennt. Eine Vererbung von mehreren Klassen gleichzeitig ist hingegen in PHP nicht erlaubt. Eine Klasse kann immer nur von einer anderen Klasse erben.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert