Daniel Segovia

Blog personal

Archive for the ‘4.13 Final’ Category

Final para métodos y clases

Hacer un comentario

Hasta ahora hemos visto que heredando una clase podemos sobreescribir métodos en una nueva implementación. Sin embargo, hay momentos donde queremos que determinados métodos no sean sobreescritos, para esto tenemos la palabra reservada final

<?php
class Base {
   final public function test() {
       echo "Llamada a Base::test()<br />";
   }
}
 
class Implementacion extends Base {
   public function test() {
       echo "Llamada a Implementacion::test()<br />";
   }
}
// Devuelve un error Fatal: Fatal error: Cannot override final method Base::test() in test.php on line 12
?>

Sí la clase es definida como final no se ésta no podrá ser extendida.

<?php
final class Base {
   public function test() {
       echo "Llamada a Base::test()<br />";
   }
}
 
class Implementacion extends Base {
   public function test() {
       echo "Llamada a Implementacion::test()<br />";
   }
}
// Devuelve un error Fatal: Fatal error: Class Implementacion may not inherit from final class (Base) in test.php on line 12
?>

Written by Daniel Segovia

abril 25th, 2011 at 1:59 pm

Posted in 4.13 Final

Tagged with , ,