Junior
Quando un metodo è considerato sovrascritto (overriding)?
sobes.tech AI
Risposta dell'AI
Un metodo è considerato sovrascritto quando in una classe figlia viene dichiarato un metodo con la stessa firma (nome del metodo, numero e tipi di parametri nello stesso ordine) rispetto al metodo nella classe genitore. Inoltre:
- Il metodo nella classe genitore non deve essere dichiarato come
final(o un modificatore equivalente in altri linguaggi), che impedisce la sovrascrittura. - Il livello di accesso del metodo sovrascritto nella classe figlia non può essere più restrittivo di quello del metodo nella classe genitore.
- Il metodo sovrascritto può restituire lo stesso tipo del metodo nella classe genitore, o un tipo covariante (sottotipo del tipo originale).
- Il metodo sovrascritto non può lanciare eccezioni più generali (o incompatibili) rispetto a quelle dichiarate nel metodo della classe genitore.
- I metodi statici non possono essere sovrascritti, solo nascosti (hidden).
Quando si chiama il metodo sovrascritto tramite un riferimento alla classe genitore, ma con un oggetto della classe figlia, viene eseguita la versione del metodo della classe figlia (polimorfismo).
// Esempio in Java
class Parent {
public void display() { // Metodo nella classe genitore
System.out.println("Parent display");
}
// final void cannotOverride() { ... } // Questo metodo non può essere sovrascritto
}
class Child extends Parent {
@Override // L'annotazione @Override aiuta il compilatore a verificare che il metodo sia effettivamente sovrascritto
public void display() { // Metodo sovrascritto con la stessa firma
System.out.println("Child display");
}
}