"Ciao, Amigo! Ti parlerò dell'overload del metodo ."

"Puoi sovraccaricare anche loro?! Che giornata!"

"Puoi fare molto con loro, ma non ne parleremo adesso."

"È un affare."

"L'overload è un'operazione molto semplice. In realtà, non è nemmeno un'operazione sui metodi, anche se a volte viene indicata con un nome spaventoso: polimorfismo parametrico ."

La cosa che devi ricordare è che ogni metodo in una classe deve avere un nome univoco.

"Si lo so."

"Beh, non è del tutto vero. Voglio dire, non è affatto vero. Un metodo non deve avere un nome univoco. Ciò che deve essere unico è la combinazione del nome di un metodo e dei tipi dei suoi parametri. Questa combinazione è anche nota come firma del metodo."

Codice Commenti
public void print();
public void print2();
Questo è permesso. I due metodi hanno nomi univoci.
public void print();
public void print(int n);
E anche questo è permesso. I due metodi hanno nomi univoci (firme).
public void print(int n, int n2);
public void print(int n);
I nomi dei metodi sono ancora univoci qui.
public int print(int a);
public void print(int n);
Ma questo non è permesso. I metodi non sono univoci, anche se vengono passati tipi diversi.
public int print(int a, long b);
public long print(long b, int a);
Ma questo è permesso. I parametri del metodo sono univoci.

"L'ho già visto da qualche parte."

"Sì. Quando digiti " System.out.println ", IntelliJ IDEA suggerisce un paio di dozzine di versioni di metodi di stampa che utilizzano parametri diversi. Il compilatore identifica semplicemente e quindi chiama il metodo richiesto in base ai tipi di parametri che passi."

"Non è così difficile. Ma non è polimorfismo."

"O più precisamente, non si tratta di ignorare il metodo."

A proposito, voglio sottolineare che i nomi dei parametri sono irrilevanti. Vengono persi durante la compilazione. Una volta che un metodo è stato rispettato, solo il suo nome ei tipi di parametro sono noti.