Java Language Sovraccarico del metodo


Esempio

L'overloading del metodo , noto anche come overloading delle funzioni , è la capacità di una classe di avere più metodi con lo stesso nome, a condizione che differiscano per numero o tipo di argomenti.

Il compilatore verifica la firma del metodo per l'overloading del metodo.

La firma del metodo consiste di tre cose:

  1. Nome del metodo
  2. Numero di parametri
  3. Tipi di parametri

Se questi tre sono gli stessi per due metodi in una classe, il compilatore genera un errore di metodo duplicato .

Questo tipo di polimorfismo viene chiamato polimorfismo statico o tempo di compilazione perché il metodo appropriato da chiamare viene deciso dal compilatore durante il tempo di compilazione in base all'elenco degli argomenti.

class Polymorph {

    public int add(int a, int b){
        return a + b;
    }
    
    public int add(int a, int b, int c){
        return a + b + c;
    }

    public float add(float a, float b){
        return a + b;
    }

    public static void main(String... args){
        Polymorph poly = new Polymorph();
        int a = 1, b = 2, c = 3;
        float d = 1.5, e = 2.5;

        System.out.println(poly.add(a, b));
        System.out.println(poly.add(a, b, c));
        System.out.println(poly.add(d, e));
    }

}

Ciò comporterà:

2
6
4.000000

I metodi di overload possono essere statici o non statici. Questo inoltre non influisce sul sovraccarico del metodo.

public class Polymorph {

    private static void methodOverloaded()
    {
        //No argument, private static method
    }
 
    private int methodOverloaded(int i)
    {
        //One argument private non-static method
        return i;
    }
 
    static int methodOverloaded(double d)
    {
        //static Method
        return 0;
    }
 
    public void methodOverloaded(int i, double d)
    {
        //Public non-static Method
    }
}

Inoltre, se si modifica il tipo di metodo restituito, non è possibile ottenerlo come overload del metodo.

public class Polymorph {  

void methodOverloaded(){
    //No argument and No return type
}

int methodOverloaded(){
    //No argument and int return type 
    return 0;
}