24. Classi e Metodi final
Come abbiamo visto nei capitoli precedenti, una sottoclasse ha la possibilità di ridefinire i metodi della classe madre.
E' possibile impedire la ridefinizione di determinati metodi e o la derivazione da determinate classi, usando la direttiva final.
Se quindi desiderate che non vengano fornite ulteriori implementazioni di un metodo della vostra classe, allora è sufficiente far precedere alla parola chiave function, la direttiva final in questo modo :
Metodo final
<?php
class ClasseBase
{
public $attributo;
public final function metodo()
{
echo "Sono un metodo finale!";
}
}
class SottoClasse extends ClasseBase
{
public function metodo() // Genera un errore fatale
{
echo "Proviamo a ridefinire il metodo finale!";
}
}
?>Il codice soprastante genera il seguente errore poichè SottoClasse ha tentato di
ridefinire un metodo finale di ClasseBase :
Se invece volete impedire che una sottoclasse derivi da una classe specifica, applicate a quest'ultima la direttiva final seguita dalla parola chiave class e dal nome classe in questo modo : |
Classe final
<?php
final class ClasseBase
{
public $attributo;
public function metodo()
{ /* ... */ }
}
class SottoClasse extends ClasseBase // Genera un errore fatale
{
/* ... */
}
?>Il codice soprastante genera il seguente errore fatale :
Fatal error: Class SottoClasse may not inherit from final class (ClasseBase)
