class Usuario{
protected $nombre;
function getNombre(){
return $this->nombre;
}
final function setNombre($name){
$this->nombre = $name;
}
}
class Editor extends Usuario{
function setNombre($name){
echo "intento de modificar método padre";
}
}
Si ejecutamos esto obtendremos el siguiente error: Fatal error: Cannot override final method Usuario::setNombre() in ... Con lo que protegemos al método setNombre() de que sea modificado por una clase heredera.
Pero no solo se puede utilizar la palabra final en los métodos de una clase. También se puede utilizar en la definición de una clase.
final class Prueba{
}
Si la utilizamos en la definición de una clase, esta clase no podrá ser heredada.
final class Usuario{
protected $nombre;
function getNombre(){
return $this->nombre;
}
function setNombre($name){
$this->nombre = $name;
}
}
class Editor extends Usuario{
function setNombre($name){
echo "intento de modificar método padre";
}
}
Este sería el resultado de intentar heredar de una clase final: Fatal error: Class Editor may not inherit from final class (Usuario) in...
Hay que tener cuidado con el uso de la palabra final, ya que estamos limitando el uso de la herencia y la programación orientada a objetos. Pero en ocasiones puede resultar útil.
Para terminar, es importante conocer que la palabra reservada final solo puede usarse en métodos y definiciones de clases. En caso contrario obtendríamos un error.
Entradas relacionadas
PHP orientado a objetos - Introducción
No hay comentarios:
Publicar un comentario