Redéfinition de méthodes
259
Notez que, jusqu’ici, nous sommes partis d’une classe existante, à partir de laquelle nous
avons défini une classe dérivée. Mais, dans la « conception » d’un logiciel, il pourra aussi
arriver que l’on définisse une classe de base dans le but de regrouper des fonctionnalités
communes à d’autres classes (par exemple, ici, A pour B et C).
6 Redéfinition de méthodes
6.1 Introduction
Jusqu’ici, nous avons vu que l’héritage permettait d’ajouter de nouvelles fonctionnalités
(méthodes et attributs) à une classe existante, sans remettre en cause l’existant. Nous allons
maintenant aborder une autre possibilité très puissante de l’héritage, la redéfinition de
méthode : une classe dérivée peut fournir une nouvelle implémentation d’une méthode
définie dans une classe ascendante. Nous verrons que cette redéfinition sera à la base même
du polymorphisme.
6.2 La notion de redéfinition de méthode
Nous avons vu qu’un objet d’une classe dérivée peut accéder à toutes les méthodes publiques
de sa classe de base. Considérons :
classe Point
{ .....
méthode affiche { écrire «Je suis en », abs, « », y )
entier abs, ord
}
classe Pointcol dériveDe Point
{ .....
// ici, on suppose qu’aucune méthode ne se nomme affiche
entier couleur
}
Point p
Pointcol pc
L’appel p.affiche fournit tout naturellement les coordonnées de l’objet p de type Point.
L’appel pc.affiche fournit également les coordonnées de l’objet pc de type Pointcol,
mais bien entendu, il n’a aucune raison d’en fournir la couleur.
C’est la raison pour laquelle, dans l’exemple du paragraphe 2.3, page 252, nous avions introduit dans la classe Pointcol une méthode affichec affichant à la fois les coordonnées et
la couleur d’un objet de type Pointcol.
Or, manifestement, ces deux méthodes affiche et affichec font un travail semblable :
elles affichent les valeurs des données d’un objet de leur classe. Dans ces conditions, il paraît
logique de chercher à leur attribuer le même nom.
Cette possibilité existe dans la plupart des langages objet ; elle se nomme redéfinition de
méthode. Elle permet à une classe dérivée de redéfinir une méthode de sa classe de base, en
en proposant une nouvelle définition.
Précédent

- 282/370

Suivant