J'ai une assez bonne idee de ce que c'est le polymorphisme en C++. Comme les conteneurs ne peuvent pas etre heterogenes et que le typage est statique, on utilise des pointeur de la classe de base et on appelle une fonction virtuelle. Si le pointeur pointe sur une classe derivee, c'est sa fonction virtuelle qui est appelee. Cela permet de faire des interfaces avec des base classes abstraite et permet l'extensibilite en declarant des fonctions dont l'implementation est encore inconnue. La surcharge en C++ (avec des fonctions non virtuelles) donne un resultat different du polymorphisme et ne permet pas le typage dynamique.
En revanche, j'ai du mal a voir la difference entre polymorphisme et surcharge en Python. Comme le typage est dynamique et que les listes peuvent etre heterogenes, il n'y a pas vraiment de difference. L'exemple donne en https://python.developpez.com/cours/apprendre-python-3/?page=la-programmation-orientee-objet#L7-5-2 est peut-etre du polymorphisme, mais c'est equivalent a de la surcharge, n'est-ce-pas?
# Polymorphisme
Posté par zeb . En réponse au journal Livre d'intro à la programmation avec Python 3. Évalué à 2.
Une question sur le polymorphisme en Python.
J'ai une assez bonne idee de ce que c'est le polymorphisme en C++. Comme les conteneurs ne peuvent pas etre heterogenes et que le typage est statique, on utilise des pointeur de la classe de base et on appelle une fonction virtuelle. Si le pointeur pointe sur une classe derivee, c'est sa fonction virtuelle qui est appelee. Cela permet de faire des interfaces avec des base classes abstraite et permet l'extensibilite en declarant des fonctions dont l'implementation est encore inconnue. La surcharge en C++ (avec des fonctions non virtuelles) donne un resultat different du polymorphisme et ne permet pas le typage dynamique.
En revanche, j'ai du mal a voir la difference entre polymorphisme et surcharge en Python. Comme le typage est dynamique et que les listes peuvent etre heterogenes, il n'y a pas vraiment de difference. L'exemple donne en https://python.developpez.com/cours/apprendre-python-3/?page=la-programmation-orientee-objet#L7-5-2 est peut-etre du polymorphisme, mais c'est equivalent a de la surcharge, n'est-ce-pas?
Merci de m'eclairer.