La palabra reservada 'Final'

PHP 5 introduce la palabra reservada 'final', la cual prevee que las clases hijo puedan sobreescribir un método, usando el prefijo 'final' en la definición del método. Si la clase en sí misma es definida como 'final' entonces no puede ser extendida.

Ejemplo 19-27. Ejemplo de métodos con Final

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

class
ChildClass extends BaseClass {
   
public function moreTesting() {
       echo
"ChildClass::moreTesting() called\n";
   }
}
// Results in Fatal error: Cannot override final method BaseClass::moreTesting()
?>

Ejemplo 19-28. Ejemplo de clase con Final

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

   
// Here it doesn't matter if you specify the function as final or not
   
final public function moreTesting() {
       echo
"BaseClass::moreTesting() called\n";
   }
}

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

Hosting by: hurra.com
Generated: 2007-01-26 18:00:52