La surcharge (overloading) consiste à définir plusieurs méthodes de même nom avec des paramètres différents en nombre ou en type. Le compilateur choisit la version selon les arguments de l'appel. Le type de retour seul ne suffit pas à distinguer deux surcharges.
Exemple
static int somme(int a, int b) { return a + b; }
static double somme(double a, double b) { return a + b; }