Surcharge de méthode en Java
La surcharge de méthode est un concept qui permet à une classe d’avoir plusieurs méthodes portant le même nom, si leurs listes d’arguments sont différentes. Il est similaire à la surcharge de constructeur en Java, qui permet à une classe d’avoir plus d’un constructeur ayant des listes d’arguments différentes.
Liste d’arguments, signifie les paramètres d’une méthode: Par exemple, la liste d’arguments de la méthode somme(int x, int y)
ayant deux paramètres est différente de la méthode somme(int x, int y, int z)
ayant trois paramètres.
Deux façons de surcharger une méthode:
Afin de surcharger une méthode, les listes d’arguments des méthodes doivent différer dans l’un ou l’autre:
1- Nombre de paramètres
Par exemple: Ceci est un cas valide de surcharge.
somme(int, int) somme(int, int, int)
2- Type de données des paramètres
Par exemple: Ceci est un cas valide de surcharge.
somme(int, int) somme(int, double)
Cas non valide de surcharge de méthode:
Quand on dit liste d’arguments, on ne parle pas du type de retour de la méthode, par exemple si deux méthodes ont le même nom, les mêmes paramètres et ont un type de retour différent, alors ce n’est pas un exemple de surcharge de méthode valide. Cela générera une erreur de compilation.
int somme(int, int) double somme(int, int)
Exemple de surcharge de méthode en Java
public class Operation { public int somme(int x, int y) { return x + y; } public int somme(int x, int y, int z) { return x + y + z; } public static void main(String args[]) { Operation op = new Operation(); System.out.println(op.somme(1,2)); System.out.println(op.somme(1,2,3)); } }
Sortie:
3 6
Testez vos connaissance:
1. A quoi sert la surcharge de méthode dans Java?
2. Le code suivant est-il valide ou non?
int somme(int a, int b, float c) int somme(int x, int y, float z)
3. Le code suivant est-il valide ou non?
int somme(int a, int b) int somme(int x)
4. Le code suivant est-il valide ou non?
int somme(int a, int b) int somme(double x, double y)
5. Le code suivant est-il valide ou non?
int somme(int a, int b) double somme(int x, int y)