Hay ocasiones en las cuales cuando queramos definir una clase, y no queremos que esta clase pueda ser heredada por otra clase. Para ello se utiliza la palabra reservada final, de la siguiente manera.
Ejm
<?php
// La clase Hogar no podrá ser heredada de ninguna otra clase
final class Hogar {
public $color, $seguridad;
}
// Esto nos dará error, la clase 'Dpto' no puede heredar de la clase 'Hogar' ya que hemos
// antepuesto la palabra reservada 'final' delante de la clase 'Hogar'
class Dpto extends Hogar {
}
Métodos finales
Anteponiendo la keyword final en el método hacemos que dicho método no pueda extenderse a clase hijas, y por lo tanto no pueda ser sobreescrito.
Ejm
<?php
// La clase Hogar no podrá ser heredada de ninguna otra clase
final class Hogar {
public $color, $seguridad;
// Método 'final' no puede ser heredado por una clase hija, por lo tanto no puede ser sobreescrito
final public function saludar(){
echo "Bienvenido a mi hogar";
}
}
// Esto nos dará error, la clase 'Dpto' no puede heredar de la clase 'Hogar' ya que hemos
// antepuesto la palabra reservada 'final' delante de la clase 'Hogar'
class Dpto extends Hogar {
}