Многократная диспетчеризация и перегрузка функций

14

Я пытаюсь понять разницу (если есть) между ними.

Согласно странице Википедии для Multiple Dispatch, это синонимично с перегрузкой функций, но позже она говорит:

На языке с единственной отправкой, таком как Java […]

что кажется противоречием, поскольку Java поддерживает перегрузку функций.

Так что это? Отличается ли Multiple Dispatch от перегрузки функций или статья ошибочна, утверждая, что Java не поддерживает Multible Dispatch?

KaptajnKold
источник

Ответы:

16

Многократная диспетчеризация не всегда совпадает с перегрузкой функций, хотя они имеют некоторое сходство. И Java не поддерживает множественную диспетчеризацию.

В статически типизированных языках, включая Java, наибольшее различие между диспетчеризацией и перегрузкой заключается в том, что перегрузка основана на статическом типе параметров (т.е. выбор метода, который фактически вызывается, определяется во время компиляции), тогда как диспетчеризация основана на динамическом типы (т.е. решение принимается во время выполнения). (Такие языки обычно не поддерживают множественную диспетчеризацию.)

Но опять же, это может быть вопросом терминологии. В динамически типизированных языках диспетчеризация и перегрузка действительно сводятся к одному и тому же.

Петер Тёрёк
источник