EreditarietĂ in Javascript
L’ereditarietà è un concetto fondamentale nella programmazione orientata agli oggetti che ci consente di creare nuove classi basate su quelle esistenti. In JavaScript, possiamo utilizzare l’ereditarietà per estendere e specializzare le funzionalità di una classe di base.
Estendere una Classe
Per estendere una classe in JavaScript, utilizziamo la parola chiave extends
. La classe figlia (o sottoclasse) eredita tutte le proprietĂ e i metodi dalla classe genitore (o superclasse). Ecco un esempio:
class Animale {
constructor(nome) {
this.nome = nome;
}
emettiSuono() {
console.log(`${this.nome} emette un suono.`);
}
}
class Cane extends Animale {
constructor(nome, razza) {
super(nome);
this.razza = razza;
}
emettiSuono() {
console.log(`${this.nome} (${this.razza}) abbaia.`);
}
}
Nell’esempio sopra, la classe Cane
estende la classe Animale
. La classe figlia ha un costruttore che chiama il costruttore della classe genitore usando super()
. La classe figlia ha anche un metodo emettiSuono()
che sovrascrive il metodo della classe genitore.
Quando una classe figlia eredita un metodo dalla classe genitore, può sovrascriverlo per fornire un comportamento diverso. Questo ci consente di specializzare il comportamento dei metodi in base alle esigenze della classe figlia (emettiSuono()
).
Utilizzare l’EreditarietĂ
Creando un’istanza della classe figlia, possiamo accedere sia ai metodi ereditati dalla classe genitore che ai metodi specifici della classe figlia:
const fido = new Cane("Fido", "Golden Retriever");
fido.emettiSuono(); // Output: Fido (Golden Retriever) abbaia.
Aggiungere Nuove ProprietĂ e Metodi
Oltre a ereditare proprietà e metodi, una classe figlia può introdurre nuove proprietà e metodi:
class Gatto extends Animale {
constructor(nome, colore) {
super(nome);
this.colore = colore;
}
faiFusa() {
console.log(`${this.nome} (${this.colore}) fa le fusa.`);
}
}
const micio = new Gatto("Micio", "Grigio");
micio.emettiSuono(); // Output: Micio emette un suono.
micio.faiFusa(); // Output: Micio (Grigio) fa le fusa.
Conclusioni
L’ereditarietà è uno strumento potente per estendere e specializzare le funzionalità delle classi in JavaScript. Utilizzando extends
, possiamo creare nuove classi che ereditano proprietĂ e metodi da una classe genitore. Questo concetto ci consente di organizzare il codice in modo efficiente e creare gerarchie di classi che riflettono le relazioni tra gli oggetti nel nostro programma.