Guida Php – 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 :

Fatal error: Cannot override final method ClasseBase::metodo()

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)

Versione originale dell’articolo

Lezione Precedente -> Guida Php – Esempio pratico per l’uso di Interfacce

Lezione Successiva -> Guida Php – Gestione degli Errori

Tags: , ,

Lascia un Commento

Connect with Facebook