Concetti Chiave

  • L'overloading consente di avere più metodi con lo stesso nome, differenziati dai parametri, come .saldo() e .saldo(int x).
  • In Java, la compatibilità tra classi implica che un oggetto di una sottoclasse è strettamente compatibile con la sua superclasse.
  • Il tipo a Compile-Time è quello dichiarato nel codice sorgente, mentre il tipo a Run-Time è determinato durante l'esecuzione dell'applicazione.
  • Il cast di oggetti nell'ereditarietà richiede di anteporre il nuovo tipo per accedere a metodi specifici delle sottoclassi.
  • Un esempio di casting è l'uso di "((Macchina)v).segnala();" per richiamare un metodo di una sottoclasse partendo dall'oggetto di una superclasse.

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.

Qual è la compatibilità tra classi?

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

Esempio di 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();

Domande da interrogazione

  1. Cos'è l'overloading e come si applica ai metodi in Java?
  2. L'overloading è un processo che consente di avere più metodi con lo stesso nome, differenziati in base ai parametri. Ad esempio, è possibile avere il metodo .saldo() e il metodo .saldo(int x), richiedendo attenzione nel loro utilizzo (come indicato nel testo).

  3. Qual è la differenza tra compatibilità a compile-time e run-time in Java?
  4. La compatibilità a compile-time si riferisce al tipo dichiarato nel codice sorgente, mentre la compatibilità a run-time è il tipo determinato durante l'esecuzione. Questo è illustrato dall'esempio in cui un oggetto di tipo Veicolo è istanziato come Macchina (come descritto nel testo).

  5. Come si effettua il cast di oggetti nell'ereditarietà in Java?
  6. Il cast di oggetti si effettua anteponendo il nuovo tipo all'oggetto. Ad esempio, si può assegnare un oggetto Macchina a una variabile di tipo Veicolo e successivamente utilizzare il cast per accedere ai metodi specifici della classe Macchina (come spiegato nel testo).

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community