En
informatique et en
théorie des types, le
polymorphisme, du
grec ancien polús (plusieurs) et
morphê (forme), est le concept consistant à fournir une interface unique à des entités pouvant avoir différents
types. Par exemple, des opérations telles que la multiplication peuvent ainsi être étendues à des
scalaires aux
vecteurs ou aux
matrices, l'addition, des scalaires aux
fonctions ou aux
chaînes de caractères, etc. Il existe plusieurs sortes de polymorphismes fondamentalement différents :
- le polymorphisme ad hoc, lorsque l'interface unique est implémentée par plusieurs fonctions de même nom, potentiellement hétérogènes, prenant chacune en arguments une combinaison différente des types des entités. En programmation, on parle de surcharge ;
- le polymorphisme paramétré, lorsque l'interface unique est implémentée par une seule fonction prenant en arguments un type générique pour chaque entité. En programmation orientée objet, on parle souvent de programmation générique et en programmation fonctionnelle, on parle simplement de polymorphisme ;
- le polymorphisme par sous-typage (aussi appelé polymorphisme d'inclusion), lorsque l'interface unique est fournie pour une entité objet pouvant prendre des types classe différents de la même hiérarchie de classe et que l’interface est implémentée par plusieurs fonctions membres de même nom, potentiellement hétérogènes, chacune membre d'une classe différente appartenant à la hiérarchie. En programmation orientée objet, on parle simplement de polymorphisme.