In questa lezione analizziamo la ridefinizione dei metodi in Java: come e perché una sottoclasse sostituisce il comportamento del genitore, a cosa serve l'annotazione
@Override, come funziona il polimorfismo quando si invoca tramite un riferimento di tipo base, nonché le regole chiave (firma, modificatori di accesso, eccezioni, covarianza) e le limitazioni (
static,
final,
private). Concludiamo con la pratica su un mini‑progetto «Zoo» e con l'analisi degli errori tipici.