0Pricing
JavaScript Academy · Lezione

Ereditarietà, super e quando preferire la composizione

Estendi una classe base con extends, chiami super nei costruttori, sovrascrivi i metodi in sicurezza e impari quando è preferibile una semplice composizione.

Ereditarietà, super e quando preferire la composizione è una lezione JavaScript Academy gratuita su CoddyKit. Questa è la lezione 2 di 3. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento JavaScript Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso JavaScript Academy include 3 lezioni in totale.

Panoramica

Obiettivo: usi l'ereditarietà di base senza confusione.

  • extends crea una classe figlia
  • super(...) chiama il costruttore della classe genitore
  • Sovrascriva un metodo; può chiamare facoltativamente super.method()
  • Se non si tratta di una relazione is-a, preferisca la composizione
Ereditarietà, super e quando preferire la composizione — illustrazione 1

extends + super

Crei una classe figlia con extends; chiami super(name) per eseguire il costruttore della classe genitore e configurare this.

// Base class with a small field and method
class Animal {
  constructor(name) {
    this.name = name;
  }
  info() {
    return "Animal:" + this.name;
  }
}

// Child class extends the base and calls super(...)
class Dog extends Animal {
  constructor(name, breed) {
    // must call super() before using this
    super(name);
    this.breed = breed;
  }
  speak() {
    return "woof";
  }
}

const d = new Dog("Milo", "Beagle");
console.log(d.info(), d.speak());
Ereditarietà, super e quando preferire la composizione — illustrazione 2

Sovrascrittura di un metodo

Quando sovrascrive un metodo, può chiamare super.method() per riutilizzare la logica di base e poi aggiungere la propria modifica.

// Override a method; keep parent behavior with super.method()
class Button {
  click() {
    return "base-click";
  }
}

class IconButton extends Button {
  click() {
    // call parent behavior, then add something
    const base = super.click();
    return base + "+icon";
  }
}

const b = new IconButton();
console.log(b.click()); // "base-click+icon"
Ereditarietà, super e quando preferire la composizione — illustrazione 3

Preferisca la composizione per le relazioni has-a

Se la relazione è has-a (utilizza un helper), preferisca la composizione all'ereditarietà per mantenere semplici le classi.

// Composition: use a helper object instead of extending
class Logger {
  log(msg) {
    console.log("[log]", msg);
  }
}

class Player {
  constructor(name, logger) {
    this.name = name;
    this.logger = logger; // has-a logger
  }
  score(points) {
    this.logger.log(this.name + " +" + points);
  }
}

const logger = new Logger();
const p = new Player("Ayla", logger);
p.score(5);
Ereditarietà, super e quando preferire la composizione — illustrazione 4

is-a e has-a

L'ereditarietà modella una relazione is-a: un Dog è un Animal. La composizione è adatta agli helper has-a.

// Use instanceof for a quick is-a check
console.log("Dog is Animal?", d instanceof Animal);
console.log("Player is Animal?", p instanceof Animal);
Ereditarietà, super e quando preferire la composizione — illustrazione 5

Abitudini per chi è alle prime armi

Suggerimenti:

  • Mantenga le gerarchie poco profonde per chi è alle prime armi.
  • Chiami super(...) per primo nei costruttori delle sottoclassi.
  • Sovrascriva solo ciò che serve; riutilizzi la logica con super.method().
  • Preferisca la composizione per le utilità e le funzionalità trasversali.
Ereditarietà, super e quando preferire la composizione — illustrazione 6

Quiz sulle basi di super(...)

Verifica rapida: super nel costruttore di una sottoclasse.

Ereditarietà, super e quando preferire la composizione — illustrazione 7

Riepilogo

Riepilogo: usi extends per le vere relazioni is-a, chiami presto super(...), sovrascriva con attenzione (chiami super.method() quando è utile) e preferisca la composizione per gli helper.

Ereditarietà, super e quando preferire la composizione — illustrazione 8

Domande Frequenti

La lezione «Ereditarietà, super e quando preferire la composizione» è gratuita?

Sì — il testo completo di «Ereditarietà, super e quando preferire la composizione» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso JavaScript Academy, passa a CoddyKit PRO. Il corso JavaScript Academy include 3 lezioni in totale.

Cosa imparerò in «Ereditarietà, super e quando preferire la composizione»?

Estendi una classe base con extends, chiami super nei costruttori, sovrascrivi i metodi in sicurezza e impari quando è preferibile una semplice composizione. Eserciti JavaScript Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare JavaScript Academy?

Non è richiesta alcuna esperienza precedente. JavaScript Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 3.

Quanto tempo richiede la lezione «Ereditarietà, super e quando preferire la composizione»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione JavaScript Academy?

Sì. Ogni lezione JavaScript Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Campi delle classi, campi privati #, membri statici
  2. Ereditarietà, super e quando preferire la composizione
  3. Mixin (assaggio) — riuso semplice senza gerarchie profonde
← Torna a JavaScript Academy