Sovraccarico del metodo

Il nostro nuovo e interessante argomento di oggi è l'overload dei metodi . Fai attenzione: l'override del metodo non deve essere confuso con l'override del metodo.

A differenza dell'override, il sovraccarico è un'operazione molto semplice. In realtà non è un'operazione sui metodi, anche se a volte viene indicata con il terribile termine polimorfismo parametrico .

Il problema qui è che tutti i metodi all'interno di una classe devono avere nomi univoci. Beh, non è del tutto esatto. Beh, più precisamente, non è affatto esatto. Il nome del metodo non deve essere univoco. Ciò che deve essere unico è l'unione del nome del metodo e dei tipi dei parametri del metodo. Questa unione è nota come firma del metodo

Esempi:

Codice Descrizione
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. I due metodi hanno nomi univoci (firme).
public void print(int n, int n2);
public void print(int n);
I metodi sono ancora unici
public int print(int a);
public void print(int n);
Ma questo non è permesso . I metodi non sono univoci . Anche se restituiscono tipi diversi.
public int print(int a, long b);
public long print(long b, int a);
Ma puoi farlo . I parametri del metodo sono univoci

La firma include il nome del metodo ei tipi di parametro . Non include il tipo restituito del metodo e i nomi dei parametri . Una classe non può avere due metodi con le stesse firme: il compilatore non saprà quale chiamare.

I nomi dei parametri non hanno importanza , poiché vengono persi durante la compilazione. Una volta compilato un metodo, se ne conoscono solo il nome ei tipi di parametro. Il tipo restituito non viene perso, ma il risultato del metodo non deve essere assegnato a nulla, quindi non è nemmeno incluso nella firma.

Secondo i principi OOP , il polimorfismo nasconde diverse implementazioni dietro una singola interfaccia. Quando chiamiamo il System.out.println()metodo, ad esempio, vengono chiamati diversi metodi a seconda degli argomenti passati. Questo è il polimorfismo in azione.

Ecco perché metodi diversi con nomi identici contenuti nella stessa classe sono considerati una forma debole di polimorfismo.