L'Ereditarietà in PHP: Estendere le Classi con `extends`

PHP

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