Estratto del documento

Polimorfismo in Java

L'esecuzione di un metodo su un oggetto è sempre determinata dal tipo dell’oggetto in Java e non dal tipo della variabile. La stessa operazione può essere svolta in modi diversi, a seconda dell'oggetto a cui ci si riferisce. Questa semantica si chiama polimorfismo ("molte forme") ed è caratteristica dei linguaggi Object-Oriented.

Esempio 1: SavingsAccount e BankAccount

Si ha un oggetto di tipo SavingsAccount al quale viene applicato il metodo deposit. Siccome SavingsAccount è una sottoclasse di BankAccount e in entrambe le classi è presente un metodo deposit, quale metodo viene invocato, quello di BankAccount o quello ridefinito in SavingsAccount? Viene invocato il metodo deposit di SavingsAccount in questo caso dall’interprete (e non dal compilatore).

Esempio 2: Metodi sovraccarichi println

Una forma di polimorfismo a proposito dei metodi è il metodo println, che è in realtà un metodo scelto fra alcuni metodi con lo stesso nome ma con firme diverse. Nell’esempio 1 si parla di late binding (selezione posticipata) perché la decisione è presa dall’interprete. Mentre nell’esempio 2 si parla di early binding (selezione anticipata) perché la decisione è presa dal compilatore.

Controllo del tipo e instanceof

Se si vuole controllare il tipo dell'oggetto a cui una variabile oggetto si riferisce, si può usare l’operatore instanceof. Restituisce true se la variabile oggetto contiene un riferimento (sta puntando) ad un oggetto del tipo specificato dal secondo argomento.

Esempio

SavingsAccount collegeFund = new SavingsAccount(10);

BankAccount anAccount = collegeFund;

if (anAccount instanceof SavingsAccount) <- Restituisce true

SavingsAccount a = (SavingsAccount) anAccount;

Anteprima
Vedrai una selezione di 1 pagina su 1
Informatica I - il polimorfismo e l'ereditarieta' in java Pag. 1
1 su 1
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher enricopava di informazioni apprese con la frequenza delle lezioni di Informatica 1 e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Padova o del prof Avanzini Federico.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community