logo

Sovraccarico dei metodi in Java

  1. Diversi modi per sovraccaricare il metodo
  2. Modificando il n. di argomenti
  3. Modificando il tipo di dati
  4. Perché l'overload del metodo non è possibile modificando il tipo restituito
  5. Possiamo sovraccaricare il metodo principale
  6. sovraccarico del metodo con Type Promotion

Se un classe ha più metodi con lo stesso nome ma diversi nei parametri, è noto come Sovraccarico del metodo .

Se dobbiamo eseguire una sola operazione, avere lo stesso nome dei metodi aumenta la leggibilità del file programma .

array di ordinamento in Java

Supponiamo di dover eseguire l'addizione dei numeri indicati ma può esserci un numero qualsiasi di argomenti, se scrivi il metodo come a(int,int) per due parametri e b(int,int,int) per tre parametri allora sarà potrebbe essere difficile per te e per altri programmatori comprendere il comportamento del metodo perché il suo nome è diverso.

Quindi, eseguiamo l'overload del metodo per capire rapidamente il programma.

sovraccarico del metodo Java

Vantaggio del sovraccarico del metodo

Sovraccarico del metodo aumenta la leggibilità del programma .

Diversi modi per sovraccaricare il metodo

Esistono due modi per sovraccaricare il metodo in Java

  1. Modificando il numero di argomenti
  2. Modificando il tipo di dati

In Java, l'overload del metodo non è possibile modificando solo il tipo restituito del metodo.


1) Sovraccarico del metodo: modificando n. di argomenti

In questo esempio, abbiamo creato due metodi, il primo metodo add() esegue l'addizione di due numeri e il secondo metodo add esegue l'addizione di tre numeri.

In questo esempio, stiamo creando metodi statici in modo che non sia necessario creare un'istanza per chiamare i metodi.

 class Adder{ static int add(int a,int b){return a+b;} static int add(int a,int b,int c){return a+b+c;} } class TestOverloading1{ public static void main(String[] args){ System.out.println(Adder.add(11,11)); System.out.println(Adder.add(11,11,11)); }} 
Provalo adesso

Produzione:

 22 33 


2) Sovraccarico del metodo: modifica del tipo di dati degli argomenti

In questo esempio, abbiamo creato due metodi che differiscono in Provalo adesso

Produzione:

 22 24.9 

D) Perché l'overload del metodo non è possibile modificando solo il tipo di metodo restituito?

In Java, l'overload del metodo non è possibile modificando il tipo restituito del metodo solo a causa dell'ambiguità. Vediamo come può verificarsi l'ambiguità:

 class Adder{ static int add(int a,int b){return a+b;} static double add(int a,int b){return a+b;} } class TestOverloading3{ public static void main(String[] args){ System.out.println(Adder.add(11,11));//ambiguity }} 
Provalo adesso

Produzione:

 Compile Time Error: method add(int,int) is already defined in class Adder 

System.out.println(Adder.add(11,11)); //Qui, come può Java determinare quale metodo sum() deve essere chiamato?

Nota: l'errore in fase di compilazione è migliore dell'errore in fase di esecuzione. Pertanto, il compilatore Java restituisce un errore temporale del compilatore se dichiari lo stesso metodo con gli stessi parametri.

Possiamo sovraccaricare il metodo Java main()?

Sì, tramite sovraccarico del metodo. Puoi avere un numero qualsiasi di metodi principali in una classe tramite l'overload del metodo. Ma JVM chiama il metodo main() che riceve l'array di stringhe solo come argomenti. Vediamo il semplice esempio:

 class TestOverloading4{ public static void main(String[] args){System.out.println('main with String[]');} public static void main(String args){System.out.println('main with String');} public static void main(){System.out.println('main without args');} } 
Provalo adesso

Produzione:

 main with String[] 

Overloading del metodo e promozione del tipo

Un tipo viene promosso a un altro in modo implicito se non viene trovato alcun tipo di dati corrispondente. Capiamo il concetto con la figura riportata di seguito:

Overloading del metodo Java con promozione del tipo

Come mostrato nel diagramma sopra, il byte può essere promosso a short, int, long, float o double. Il tipo di dati short può essere promosso a int, long, float o double. Il tipo di dati char può essere promosso a int,long,float o double e così via.

Esempio di sovraccarico del metodo con TypePromotion

 class OverloadingCalculation1{ void sum(int a,long b){System.out.println(a+b);} void sum(int a,int b,int c){System.out.println(a+b+c);} public static void main(String args[]){ OverloadingCalculation1 obj=new OverloadingCalculation1(); obj.sum(20,20);//now second int literal will be promoted to long obj.sum(20,20,20); } } 
Provalo adesso
 Output:40 60 

Esempio di sovraccarico del metodo con promozione del tipo se trovata corrispondenza

Se nel metodo sono presenti argomenti di tipo corrispondenti, la promozione del tipo non viene eseguita.

 class OverloadingCalculation2{ void sum(int a,int b){System.out.println('int arg method invoked');} void sum(long a,long b){System.out.println('long arg method invoked');} public static void main(String args[]){ OverloadingCalculation2 obj=new OverloadingCalculation2(); obj.sum(20,20);//now int arg sum() method gets invoked } } 
Provalo adesso
 Output:int arg method invoked 

Esempio di sovraccarico del metodo con promozione del tipo in caso di ambiguità

Se nel metodo non sono presenti argomenti di tipo corrispondente e ciascun metodo promuove un numero simile di argomenti, si verificherà ambiguità.

 class OverloadingCalculation3{ void sum(int a,long b){System.out.println('a method invoked');} void sum(long a,int b){System.out.println('b method invoked');} public static void main(String args[]){ OverloadingCalculation3 obj=new OverloadingCalculation3(); obj.sum(20,20);//now ambiguity } } 
Provalo adesso
 Output:Compile Time Error 

Un tipo non viene depromosso implicitamente, ad esempio double non può essere depromosso implicitamente a nessun tipo.

trova il mio iPhone da Android