Concetti Chiave
- L'overloading consente di avere più metodi con lo stesso nome, differenziati dai parametri, utile per richiamare in modo specifico metodi simili.
- È possibile applicare l'overloading anche ai costruttori, trattandoli come metodi con parametri diversi.
- In Java, la compatibilità tra classi è determinata dalle relazioni di sottoclasse, con concetti di compatibilità stretta e non stretta.
- Compile-Time e Run-Time sono concetti chiave nell'ereditarietà, distinguendo tra il tipo dichiarato nel codice e il tipo durante l'esecuzione.
- Il casting di oggetti permette di cambiare il tipo di un oggetto, importante per accedere a metodi specifici di una sottoclasse.
Overloading
L’overloading è quel processo che permette di avere più metodi con lo stesso nome ma differenziati tra loro in base ai parametri tra (). E’ per questo motivo che è possibile avere il metodo .saldo() e il metodo .saldo(int x) e quando li richiamerò dovrò prestare attenzione ad utilizzare uno piuttosto che l’altro. L’overloading può avvenire anche per i costruttori in quanto metodi.
Compatibilità stretta e non / Compile-Time vs Run-Time
Dati due oggetti A e B, con B sottoclasse di A, si dice che A è Compatibile con B e B è Strettamente Compatibile con A.
Un altro concetto importante nell’ereditarietà in Java è il significato di Run-Time e Compile-Time. Il tipo a Compile-Time di una espressione, è il tipo dell’espressione come dichiarato formalmente nel codice sorgente mentre il tipo a Run-Time è il tipo dell’espressione determinato durante l’esecuzione dell’applicazione. Questi due diversi tipi sono riscontrabili nel seguente codice:
ES. Veicolo v = new Macchina ();
Veicolo a compile-time e Macchina a run-time
Cast di oggetti
Riguardo il Cast di oggetti nell’ereditarietà si procede come solito infatti basta semplicemente anteporre il nuovo tipo. Ossia:
ES. Macchina fiat = new Macchina ();
Veicolo v = fiat;
fiat.segnala(); // segnala è un metodo di Macchina non applicabile ad uno Veicolo
((Macchina)v).segnala();