Java Language Surcharge de méthode


Exemple

La surcharge de méthode , également appelée surcharge de fonction , est la capacité d'une classe à avoir plusieurs méthodes portant le même nom, à condition qu'elles diffèrent en nombre ou en type d'arguments.

Le compilateur vérifie la signature de la méthode pour la surcharge de la méthode.

La signature de la méthode consiste en trois choses -

  1. Nom de la méthode
  2. Nombre de paramètres
  3. Types de paramètres

Si ces trois méthodes sont identiques pour deux méthodes d'une classe, alors le compilateur génère une erreur de méthode en double .

Ce type de polymorphisme est appelé polymorphisme statique ou temps de compilation car la méthode appropriée à appeler est décidée par le compilateur pendant la compilation à partir de la liste des arguments.

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));
    }

}

Cela se traduira par:

2
6
4.000000

Les méthodes surchargées peuvent être statiques ou non statiques. Cela n'affecte pas non plus la surcharge de la méthode.

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
    }
}

De plus, si vous modifiez le type de méthode de retour, nous ne pouvons pas l'obtenir en tant que surcharge de méthode.

public class Polymorph {  

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

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