L'ereditarietà è uno dei pilastri della Programmazione a Oggetti. Permette di creare una nuova classe (la "classe figlia" o "sottoclasse") che eredita tutte le proprietà e i metodi pubblici e protetti da una classe esistente (la "classe madre" o "superclasse").
Questo promuove il riutilizzo del codice secondo il principio DRY (Don't Repeat Yourself).
Come Funziona l'Ereditarietà?
Si usa la parola chiave `extends`. Immaginiamo di avere una classe generica `Animale` e di voler creare classi più specifiche come `Cane` e `Gatto`.
class Animale {
public $nome;
public function __construct($nome) {
$this->nome = $nome;
}
public function mangia() {
return $this->nome . " sta mangiando.";
}
}
// Cane eredita da Animale
class Cane extends Animale {
public function abbaia() {
return "Bau!";
}
}
// Gatto eredita da Animale
class Gatto extends Animale {
// Possiamo sovrascrivere un metodo della classe madre
public function mangia() {
return $this->nome . ", che è un gatto, sta mangiando.";
}
}
$fido = new Cane("Fido");
echo $fido->mangia(); // Stampa "Fido sta mangiando." (metodo ereditato)
echo $fido->abbaia(); // Stampa "Bau!" (metodo della classe figlia)
$silvestro = new Gatto("Silvestro");
echo $silvestro->mangia(); // Stampa "Silvestro, che è un gatto, sta mangiando." (metodo sovrascritto)
Visibilità: `public`, `protected`, `private`
L'ereditarietà è legata alla visibilità di proprietà e metodi:
- `public`: Accessibile da ovunque (dall'esterno, dalla classe stessa e dalle classi figlie).
- `protected`: Accessibile solo dalla classe stessa e dalle sue classi figlie. Non accessibile dall'esterno.
- `private`: Accessibile solo dalla classe stessa. Non è visibile nemmeno alle classi figlie.
L'ereditarietà crea una relazione "è un" (`is a`). Un `Cane` è un `Animale`. Questo permette di scrivere codice più pulito e gerarchico. Per altri modi di riutilizzare il codice, puoi leggere la nostra guida su interfacce e classi astratte.
Hai bisogno di una soluzione su misura?
Dalla Web App al gestionale custom, trasformiamo le tue idee in software performante. Contattaci per una consulenza gratuita.
Richiedi una consulenza