Programmation/Programmation orientée objet/Polymorphisme

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche

Le mot polymorphie vient du grec et signifie "qui peut prendre plusieurs formes". Dans la programmation orienté objet, le polymorphisme est utilisé en relation avec les fonctions, les méthodes et les opérateurs. Des fonctions et des méthodes de mêmes noms peuvent avoir des comportements différents ou effectuer des opérations sur des données de types différents. L’on distingue 2 types de polymorphisme, la surcharge et la redéfinition.

La surcharge[modifier | modifier le wikicode]

La surcharge est une possibilité offerte par certains langages de programmation qui permet de choisir entre différentes implémentations d'une même fonction ou méthode selon le nombre et le type des arguments fournis.

Le polymorphisme ad hoc ne doit pas être confondu avec le polymorphisme d'inclusion des langages à objets, permis par l'héritage de classe et la redéfinition de méthode (overriding en anglais).

La surcharge peut être statique (le choix de l'implémentation est alors fait en fonction du nombre d'arguments et de leur type statique déclaré à la compilation) ou dynamique (le choix de l'implémentation est alors fait en fonction du type dynamique des arguments constaté à l'exécution). La surcharge dynamique est également appelée « dispatch ».

La redéfinition[modifier | modifier le wikicode]

La notion de polymorphie est très liée à celle d’héritage. Grâce à la redéfinition, il est possible de redéfinir une méthode dans des classes héritant d’une classe de base. Par ce mécanisme, une classe qui hérite des méthodes d’une classe de base peut modifier le comportement de certaines méthodes héritées pour être adaptées aux besoins de la classe fille. Contrairement à la surcharge, une méthode redéfinie doit non seulement avoir le même nom que la méthode de base, mais le type et le nombre de paramètres doivent être identiques à ceux de la méthode de base.

Types de polymorphisme


Voir aussi[modifier | modifier le wikicode]