Palabra clave Final

PHP 5 introduce la nueva palabra clave final, que impide que las clases hijas sobrescriban un método, antecediendo su definición con final. Si la propia clase se define como final, entonces no se podrá heredar de ella.

Ejemplo #1 Ejemplo de métodos Final

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

class 
ChildClass extends BaseClass {
   public function 
moreTesting() {
       echo 
"llamada a ChildClass::moreTesting()\n";
   }
}
// Devuelve un error Fatal: Cannot override final method BaseClass::moreTesting()
?>

Ejemplo #2 Ejemplo de clase Final

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

   
// Aquí no importa si definimos una función como final o no
   
final public function moreTesting() {
       echo 
"llamada a BaseClass::moreTesting()\n";
   }
}

class 
ChildClass extends BaseClass {
}
// Devuelve un error Fatal: Class ChildClass may not inherit from final class (BaseClass)
?>

Nota: Las propiedades no pueden declararse como final. Sólo pueden las clases y los métodos.