13
Le polymorphisme
Comme nous avons déjà eu l’ocasion de le laisser entendre, le polymorphisme est un concept
très puissant de la programmation orientée objet qui complète l’héritage. Il permet de manipuler des objets sans en connaître (tout à fait) le type. Par exemple, on pourra construire un
tableau d’objets (donc en fait de références à des objets), les uns étant de type Point, les
autres étant de type Pointcol (dérivé de Point) et appeler la méthode affiche pour chacun des objets du tableau. Chaque objet réagira en fonction de son propre type.
Mais il ne s’agira pas de traiter ainsi n’importe quel objet. Nous montrerons que le polymorphisme exploite la relation est induite par l’héritage en appliquant la règle suivante : un point
coloré est aussi un point, on peut donc bien le traiter comme un point, la réciproque étant bien
sûr fausse.
Nous allons commencer par présenter les deux notions de base du polymorphisme que sont la
compatibilité par affectation et la ligature dynamique. Nous en examinerons ensuite les
conséquences dans différentes situations. Nous verrons enfin quelles sont les limites de ce
polymorphisme, ce qui nous amènera, au passage, à parler de valeurs de retour covariantes.
1 Les bases du polymorphisme
Nous allons tout d’abord éxaminer ce qui constitue les deux fondements du polymorphisme,
à savoir :
• la compatibilité par affectation,
• la ligature dynamique.
Précédent

- 294/370

Suivant