En Java, même les méthodes qui fonctionnent de la même manière ont des nombres d'arguments différents et vous devez créer des méthodes qui correspondent au nombre d'arguments. À ce stade, comment donner le nom de la méthode? Bien sûr, il est possible de les nommer de manière à ce qu'il n'y ait pas de doublons, mais s'il y a autant d'instructions que d'arguments, il sera difficile de s'en souvenir. ** Overload ** peut aider dans ce cas.
Voir le programme ci-dessous. La méthode max () renvoie la plus grande des deux variables de type int.
class Max{
static int max(int x, int y){
if(x>y)
return x;
return y;
}
}
Pensez à l'étendre pour en renvoyer une plus grande pour une variable de type double. Nous allons créer une nouvelle méthode qui correspond à l'argument de type double, mais la clé est ce qu'il faut faire avec le nom de la méthode à ce moment. En Java, les noms de méthodes peuvent être librement attribués par le programmeur en utilisant les mêmes règles que les noms de variables. Le traitement des valeurs de type int et le traitement des valeurs de type double ont différents types d'argument et types de retour, il n'est donc pas étrange de distinguer le nom de la méthode de doubleMax () etc. Cependant, du point de vue de l'utilisation de la méthode, le processus consistant à «renvoyer la plus grande valeur parmi les arguments même si le nombre est différent» ne change pas, alors donnez différents noms en fonction du nombre d'arguments et du type de type. Il devrait être plus facile à utiliser s'ils portent le même nom, même s'ils ont des nombres d'arguments différents, plutôt que de les créer et de les sélectionner de manière appropriée. La définition d'une méthode avec le même nom avec un nombre différent d'arguments s'appelle ** overload **. La surcharge élimine le besoin pour le programmeur de trouver la méthode qui correspond à l'argument, et permet au programme d'être écrit en se concentrant sur la «fonction» de la méthode elle-même.
class Max{
static int max(int a, int b){
if(a>b)
return a;
return b;
}
static double max(double a, double b){
if(a>b)
return a;
return b;
}
}
Recommended Posts