L’ereditarietà nella programmazione ad oggetti

L’ereditarietà è uno dei concetti fondamentali della programmazione ad oggetti. Consente di creare nuove classi a partire da classi esistenti, ereditando tutte le proprietà e i metodi della classe di base e aggiungendo o modificando tali proprietà e metodi.

In pratica, l’ereditarietà permette di creare una gerarchia di classi, in cui le classi figlie ereditano le proprietà e i metodi della classe madre, e possono estenderli o sovrascriverli.

Se consideriamo una classe madre “Veicolo” e una classe figlia “Auto”, la definizione della classe Auto potrebbe essere la seguente:

class Veicolo {
// proprietà e metodi base

public void accelera() {
//implementazione base
}

}

class Auto extends Veicolo {
// proprietà e metodi specifici dell’auto
}

In questo modo, la classe Auto eredita tutte le proprietà e i metodi della classe Veicolo e può accedere a essi tramite la parola chiave “super”. Ad esempio, se la classe Veicolo ha un metodo “accelera”, la classe Auto può richiamare questo metodo come segue:

class Auto extends Veicolo {
// proprietà e metodi specifici dell’auto

public void accelera() {

super.accelera(); // richiama il metodo accelera della classe madre
// aggiungi qui eventuali azioni specifiche dell’auto

}

}

In questo esempio, la classe Auto sovrascrive il metodo “accelera” della classe Veicolo, ma utilizza la parola chiave “super” per richiamare il metodo “accelera” della classe madre e aggiungere eventuali azioni specifiche dell’auto.

L’ereditarietà può essere utilizzata anche per creare classi figlie multiple che ereditano da una stessa classe madre, creando così una gerarchia di classi più complessa. Ad esempio, se consideriamo l’esempio di prima si potrebbe creare la classe Moto che estende la classe Veicolo. In questo modo, entrambe le classi figlie ereditano tutte le proprietà e i metodi della classe madre e possono estenderli o sovrascriverli a seconda delle proprie esigenze.