Sovraccarico del nome
Se esistono più costruttori in una classe, hanno tutti lo stesso nome, perché devono comunque avere lo stesso nome della classe. Questo fenomeno (più metodi o costruttori con lo stesso nome) è detto sovraccarico del nome (overloading). Il compilatore decide quale costruttore invocare basandosi sul numero e sul tipo dei parametri forniti nell’invocazione.
Se si usa lo stesso nome per metodi diversi, il nome diventa sovraccarico (nel senso di carico di significati diversi). Si usa lo stesso nome per metodi diversi (che richiedono parametri di tipo diverso) quando si vuole indicare che viene compiuta la stessa elaborazione su tipi di dati diversi. Quando si invoca un metodo sovraccarico, il compilatore risolve l’invocazione individuando quale sia il metodo richiesto sulla base dei parametri espliciti che vengono forniti.
Esempio di metodo sovraccarico nella libreria standard
public void println(int n) {...}
public void println(double d) {...}
L'enunciato return
Scopo: terminare l’esecuzione di un metodo, ritornando all’esecuzione sospesa del metodo invocante. Se è presente una espressione, questa definisce il valore restituito dal metodo e deve essere del tipo dichiarato nella firma del metodo. Al termine di un metodo con valore restituito di tipo void, viene eseguito un return implicito. Il compilatore segnala un errore se si termina senza un enunciato return un metodo con un diverso tipo di valore restituito.
Parametri espliciti e impliciti
Parametro esplicito: compare nella firma del metodo.
Parametro implicito: si riferisce alla variabile che appartiene all’oggetto con cui viene invocato il metodo.
Esempio
Metodo: public void deposit(double amount) { balance = balance + amount; }
Invocazione del metodo: account.deposit(500);
Cosa succede quando invochiamo il metodo? L’esecuzione del metodo dipende da due valori:
- Il riferimento all’oggetto account
- Il valore 500
Quando viene eseguito il metodo, il suo parametro esplicito amount assume il valore 500 mentre il parametro implicito del metodo è account.
Il riferimento null
Una variabile di un tipo numerico fondamentale contiene sempre un valore valido. Una variabile oggetto può invece contenere esplicitamente un riferimento a nessun oggetto valido assegnando alla variabile il valore null.
Esempio
BankAccount account = null;