2013-09-03 9 views
7

Si noti che solo l'ordine dei parametri viene modificato nell'esempio seguente. Quindi la mia domanda è: possiamo richiamare l'esempio di sovraccarico del metodo?Le modifiche nell'ordine dei parametri del metodo possono essere chiamate overloading dei metodi?

public void show(String s, int a){ 
    System.out.println("Test.show(String, int)"); 
} 
public void show(int s, String a){ 
    System.out.println("Test.show(int, String)"); 
} 
+0

modifiche di firma, ovviamente è sovraccarico. – Juvanis

+2

Sì, sono sovraccarichi. Avresti potuto controllarlo da solo. Il compilatore darebbe un errore in caso di metodo erratamente sovraccarico. –

+4

Can? Sì. Dovrebbero? Probabilmente no. –

risposta

8

Sì, questo è assolutamente il metodo di sovraccarico.

Da section 8.4.9 of the JLS:

Se due metodi di una classe (se sia dichiarato nella stessa classe, o entrambi ereditato da una classe, o di uno dichiarato e uno ereditato) hanno lo stesso nome, ma firme che sono non equivalente a override, quindi si dice che il nome del metodo sia sovraccarico.

"Sostituisci-equivalente" è descritto in section 8.4.2:

Due metodi hanno la stessa firma se hanno lo stesso nome e argomenti tipi.

[... dettagli su "stessi tipi di argomenti ...]

La firma di un metodo M1 è un subsignature della firma di un metodo m2 se:

  • m2 ha la stessa firma m1, o

  • la firma della M1 è la stessa della cancellazione (§4.6) della firma di m2.

Due firme di metodo m1 e m2 sono equivalenti a override se f m1 è una sottocalibrazione di m2 o m2 è una sottomarca di m1.