La surcharge de méthode est un mécanisme qui permet de définir plusieurs versions pour une méthode.
Une seule règle s'applique : la liste des paramètres de la méthode doit être différente (nombre de paramètres ou/et types des paramètres) pour chaque méthode surchargée.
La valeur de retour, les modificateurs, et les exceptions lancées par la méthode surchargée peuvent être équivalents ou différents des autres méthodes, sans que cela affecte les règles de surcharge.
package com.mtitek.overloading;
public class TestClass {
public Integer multiplyOperation(Integer value1, Integer value2) {
return value1 * value2;
}
public Double multiplyOperation(Double value1, Double value2) {
return value1 * value2;
}
public static void main(String[] args) {
TestClass testClass = new TestClass();
System.out.println(testClass.multiplyOperation(5, 10)); // la méthode multiplyOperation(Integer value1, Integer value2) sera invoquée
System.out.println(testClass.multiplyOperation(5.0, 10.0)); // la méthode multiplyOperation(Double value1, Double value2) sera invoquée
}
}
Une méthode définie dans une superclasse peut être surchargée dans une sous-classe comme n'importe quelle autre méthode de cette sous-classe.
Il faut se rappeler qu'il ne s'agit pas d'outrepassement (overriding) quand on change la signature (paramètres) de la méthode.