Nun ist es so, dass man als Autor einer Klasse dem gewahr werden muss, dass ein anderer Entwickler seine Klasse von der eigenen geschriebenen Klasse erben lässt. Mit einem private
-Vermerk ist es möglich, Variablen für erbende Klassen zu verstecken. Was ist jedoch zu tun, wenn gefordert wird, dass bestimmte Funktionen unter Garantie im Original bleiben, das heißt nicht überschrieben werden können? Manchmal ist es auch gerade umgekehrt erwünscht, dass eine bestimmte Funktion in einer Unterklasse erst definiert werden soll, während die Überklasse nur deren Signatur bereit stellt. Dies gilt insbesondere für Framework-Entwickler, welche nur den Rahmen eines Programmes zur Verfügung stellen.
Mit Hilfe des final
-Schlüsselwortes wird das Überschreiben der Funktion in Unterklassen verboten. Beispielsweise ist es möglich, der Funktion laden()
dieses Wort voranstellen, um zu verhindern, dass vom Pickup
erbende Klassen diese Funktion überschreiben:
1 2 3 4 |
<?php final public function laden($gewicht) { ... ?> |
Bei einem Überschreiben würde nun die Fehlermeldung Fatal error: Cannot override final method Pickup::laden()
erzeugt werden.