ePrometeusCorsoJavaJava
testi articoli
Testi Articoli  Download
Home | Basi | Espressioni | Comandi | Classi | Ereditarieta | Eccezioni | Thread | Utilita | 
CorsoJava è ora Video! Free for all!
Clicca Qui!

Classi
OOP
Ereditarietà
Polimorfismo
Chiamata
Classi
Record
Istanze
Costruttori
Campi
this
Allocazione
Più costruttori
this()
Inizializzazioni
Riferimenti
Ordine
Metodi
Invocazione
Overloading
Attenzione
Finalizzazione
Static e Final
Campi statici
Blocco static
Metodi statici
Visibilità
Costanti
Package
import
import *
Classpath
L'interprete
Zip e Jar

<<< Overloading >>>

Passiamo a qualche dettaglio tecnico in più riferito ai metodi. Ricordiamo che abbiamo detto che il '+' è overloaded. Infatti la somma può essere fatta su tipi diversi, numeri interi, numeri in virgola mobile e perfino stringhe. In realtà si tratta di operatori nei fatti completamente diversi che hanno in comune solamente il nome e qualche similutdine CONCETTUALE in quello che fanno (è questa similitudine che giustifica il potenziale errore indotto dal fatto che hanno lo stesso nome). Ma l'uomo è abituato a pensare per similutidini, per cui l'overloading degli operatore, pur non essendo totalmente trasparente a chi è inesperto, si rivelano un utile meccanismo.

due o più metodi possono avere lo stesso nome
i metodi devono avere argomenti diversi:
void move(int x, int y) 
 { ... }
void move(Point p) 
 { ... }

I metodi sono l'equivalente per le classi di quello che sono gli operatori per i tipi primitivi. Come tali, supportano anche essi una forma di overloading. Infatti i metodi di una stessa classe possono avere lo stesso nome ma un differente tipo e numero di argomenti. Come si può notare nel listato il metodo può venire invocato usando l'unico nome move, ma in realtà si tratta di due metodi diversi. Per selezionare quale metodo viene effettivamente invocato si usa il tipo dei parametri.

i metodi non si distinguono per il valore ritornato
void move(int x, int y)
 { ... }
// errore!
boolean move(int x, int y)  
 { ... }

Tuttavia se è sufficiente l'uso dei parametri per selezionare il metodo, non è sufficiente il tipo ritornato. Infatti ci sono troppe ambiguità, per cui due metodi non possono avere lo stesso nome, gli stessi parametri e un diverso tipo ritornato. In realtà ci sono casi in cui si presentano ambiguità anche i metodi con parametri di tipo diverso. Si tratta di casi abbastanza patologici e non frequenti, che vengono rilevati dal compilatore come errore.

ePrometeus s.r.l. - Web Software House & Open Source System Integrator
MILANO - SAN BENEDETTO DEL TRONTO(AP)
Contatti: info@eprometeus.com