Envoi multiple contre surcharge de fonction

14

J'essaie de comprendre la différence (le cas échéant) entre les deux.

Selon la page Wikipedia de Multiple Dispatch, il est synonyme de surcharge de fonctions, mais plus tard, il dit:

Dans un langage à envoi unique, tel que Java […]

ce qui semble être une contradiction, car Java prend en charge la surcharge de fonctions.

Alors c'est quoi? La répartition multiple est-elle différente de la surcharge de fonctions, ou l'article a-t-il tort de prétendre que Java ne prend pas en charge la répartition multiple?

KaptajnKold
la source

Réponses:

16

La répartition multiple n'est pas (toujours) la même chose que la surcharge de fonctions, bien qu'elles présentent certaines similitudes. Et Java ne prend pas en charge la répartition multiple.

Dans les langages à typage statique, y compris Java, la plus grande différence entre la répartition et la surcharge est que la surcharge est basée sur le type statique de paramètres (c'est-à-dire que le choix de la méthode qui est réellement appelée est décidé au moment de la compilation), tandis que la répartition est basée sur la dynamique types (c.-à-d. que la décision est prise à l'exécution). (Ces langues ne prennent généralement pas en charge l'envoi multiple.)

Mais là encore, cela peut être une question de terminologie. Dans les langages typés dynamiquement, la répartition et la surcharge semblent en effet se résumer à la même chose.

Péter Török
la source