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

Post on 21-Jul-2015

66 Views

Category:

Education

4 Downloads

Preview:

Click to see full reader

TRANSCRIPT

POO en JavaCh. IV

Surcharge des méthodes

1

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

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

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

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

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

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

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

top related