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 |
---|---|
|
Questo è permesso. I due metodi hanno nomi univoci. |
|
E anche questo. I due metodi hanno nomi univoci (firme). |
|
I metodi sono ancora unici |
|
Ma questo non è permesso . I metodi non sono univoci . Anche se restituiscono tipi diversi. |
|
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.
GO TO FULL VERSION