Java chap 04 surcharge des méthodes [mode de compatibilité]

8
POO en Java Ch. IV Surcharge des méthodes 1

Transcript of Java chap 04 surcharge des méthodes [mode de compatibilité]

Page 1: Java chap 04 surcharge des méthodes [mode de compatibilité]

POO en JavaCh. IV

Surcharge des méthodes

1

Page 2: Java chap 04 surcharge des méthodes [mode de compatibilité]

En Java , on peut surcharger une méthode, c’est-à-dire,définir (dans la même classe) plusieurs méthodes qui ont lemême nom mais pas la même signature (différenciées par letype des arguments)

On parle de surcharge (overload) ou encore de surdéfinitionlorsqu’un même symbole possède plusieurs significations différentes entre lesquelles on choisit en fonction du contexte. Par exemple, dans des expressions arithmétiques telles que a+b : la signification du symbole + dépend du type des variables a et b.

2

Page 3: Java chap 04 surcharge des méthodes [mode de compatibilité]

Considérons l’exemple1 suivant où la classe Affichage estdotée de 2 méthodes afficherValeur:

- La première a un argument de type int- La deuxième a un argument de type float

class Affichage{public void afficherValeur(int i){System.out.println("nombre entier =" + i);

}public void afficherValeur(float f){

System.out.println("nombre flottant =" + f);}

}

3

Page 4: Java chap 04 surcharge des méthodes [mode de compatibilité]

Considérons l’exemple2 suivant où la classe ClasseTest estdotée de 2 méthodes calcMoyenne:

- La première a deux arguments de type double

- La deuxième a trois arguments de type double

public double calcMoyenne(double m1, double m2) {…}

public double calcMoyenne(double m1, double m2, double m3) {…}

4

Page 5: Java chap 04 surcharge des méthodes [mode de compatibilité]

class ClasseTest{public double calcMoyenne(double m1, double m2) {

return (m1+m2)/2;}public double calcMoyenne(double m1, double m2, double m3) {

return (m1+m2+m3)/3;}

}

public class TestSurcharge {public static void main(String[] args) {

ClasseTest objA;System.out.println(“Moy1="+objA.calcMoyenne(10., 12.2));System.out.println(“Moy2="+objA.calcMoyenne(10., 12.6, 8.));

}}

5

Page 6: Java chap 04 surcharge des méthodes [mode de compatibilité]

Considérons maintenant l’exemple3 suivant où la classe Pointest dotée de 3 méthodes déplace:

- La première a deux arguments de type int

- La deuxième a un seul argument de type int

- La troisième a un seul argument de type short

public void deplace (int dx, int dy) { x+=dx; y+=dy; }

public void deplace (int dx) { x+=dx; }

public void deplace (short dx) { x+=dx; }

6

Page 7: Java chap 04 surcharge des méthodes [mode de compatibilité]

class Point {private int x,y;public void initialise (int abs, int ord){ x=abs; y=ord; }public void deplace (int dx, int dy) { x+=dx; y+=dy; }public void deplace (int dx) { x+=dx; }public void deplace (short dx) { x+=dx; }

}public class Surcharge {

public static void main(String arg[]) {Point a=new Point();a.initialise(1,2);a.deplace(1,3); // appel deplace (int,int)a.deplace(2); // appel deplace (int)short p=3;

// appel deplace (short)a.deplace(p);byte b=2;a.deplace(b); // appel deplace(short) après conversion de b en short

}}

7

Page 8: Java chap 04 surcharge des méthodes [mode de compatibilité]

En Java, il est interdit de surcharger une méthodeen changeant le type de retour uniquement:

c’est-à-dire ne différencier les 2 méthodes que parleur type retour.Par exemple, on ne peut pas avoir les 2 méthodessuivante dans une classe :

int division(int, int); // division entièrefloat division(int, int); // division réelle

8