5. Surcharge de méthodes

La surcharge (overloading) permet au programmeur de déclarer plusieurs méthodes ou constructeurs ayant le même nom, mais ayant des paramètres différents. Au moment de la génération de code, le compilateur identifie tous les appels à ces méthodes. Il les compare avec les déclarations des méthodes, et choisi la méthode à appeler en fonction de ses paramètres.
...
int somme(int a,int b) {
    return (a+b);
}

int somme(int a,int b,int c) {
    return (a+b+c);
}

float somme(float a,float b) {
    return (a+b);
}
...


...
int entA = 1,entB = 2,entC = 9;
float fA = 1.3,fB = 2.6;

int entSomme = somme(entA,entB,entC);
float fSomme = somme(fA,fB);
...
println est une méthode de la classe PrintStream qui accepte plusieurs types de paramètres différents, grâce à la surcharge. Le paramètre de println est calculé avant l'appel à la méthode. Ainsi, println(1+1) affichera 2 alors que println(1+" "+1) affichera 1 1.

Attention !

Il n'est pas possible d'avoir deux méthodes (de même nom) dont tous les paramètres sont identiques, et dont seul le type de méthode diffère. Le compilateur ne saurait pas quelle méthode employer. L'exemple ci-dessous n'est pas valide :
int somme(float a,float b) {
    return ((int)(a+b));
}

float somme(float a,float b) {
    return (a+b);
}

Index général - Index concepts - Règles BNF
© 1996, DIP Genève, Alexandre Maret & Jacques Guyot
page générée Fri Jun 21 15:41:19 MET DST 1996