Forum und email

Final Schlüsselwort

PHP 5 führt das final Schlüsselwort ein, welches Kindklassen davon abhält Methoden zu überladen, indem man der Definition final voranstellt. Wenn die Klasse selbst als final definiert wird, kann sie nicht erweitert werden.

Example#1 Beispiele für final Methoden

<?php
class BaseClass {
   public function 
test() {
       echo 
"BaseClass::test() aufgerufen\n";
   }
   
   final public function 
moreTesting() {
       echo 
"BaseClass::moreTesting() aufgerufen\n";
   }
}

class 
ChildClass extends BaseClass {
   public function 
moreTesting() {
       echo 
"ChildClass::moreTesting() aufgerufen\n";
   }
}
// Erzeugt einen fatalen Fehler: Cannot override final method BaseClass::moreTesting()
?>

Example#2 Beispiel für final Klassen

<?php
final class BaseClass {
   public function 
test() {
       echo 
"BaseClass::test() aufgerufen\n";
   }

   
// Es macht hier keinen Unterschied, ob die Methode final ist oder nicht
   
final public function moreTesting() {
       echo 
"BaseClass::moreTesting() aufgerufen\n";
   }
}

class 
ChildClass extends BaseClass {
}
// Erzeugt einen fatalen Fehler: Class ChildClass may not inherit from final class (BaseClass)
?>