final

O PHP 5 introduz a palavra-chave final, que previne que classes filhas sobrescrevam um método que esteja prefixado sua definição com final. Se a própria classe estiver definida como final, ela não pode ser estendida.

Exemplo #1 Exemplo de métodos final

<?php
class ClasseBase {
   public function 
teste() {
       echo 
"ClasseBase::teste() chamado\n";
   }

   final public function 
maisTeste() {
       echo 
"ClasseBase::maisTeste() chamado\n";
   }
}

class 
ClasseFilha extends ClasseBase {
   public function 
maisTeste() {
       echo 
"ClasseFilha::maisTeste() called\n";
   }
}
// Resulta em erro Fatal: Não pode sobrescrever método final ClasseBase::maisTeste()
?>

Exemplo #2 Exemplo de classe Final

<?php
final class ClasseBase {
   public function 
teste() {
       echo 
"Método ClasseBase::teste() chamado\n";
   }

   
// Aqui não importa se você especificar a função como Final ou não
   
final public function maisTeste() {
       echo 
"Método ClasseBase::maisTeste() chamado\n";
   }
}

class 
ClasseFilha extends ClasseBase {
}
// Resulta em erro Fatal: A classe ClasseFilha não pode herdar de uma classe Final (ClasseBase)
?>

Nota: Propriedades não podem ser declaradas como finais, apenas classes e métodos.