Wysyłka wielokrotna a przeciążenie funkcji

14

Próbuję zrozumieć różnicę (jeśli w ogóle) między nimi.

Według strony Wikipedii dotyczącej wielokrotnego wysyłania jest to synonim przeciążenia funkcji, ale później mówi dalej:

W języku z pojedynczą wysyłką, takim jak Java […]

co wydaje się sprzecznością, ponieważ Java obsługuje przeciążenie funkcji.

Więc co to jest? Czy wysyłanie wielokrotne różni się od przeciążania funkcji, czy też w artykule nie ma racji, twierdząc, że Java nie obsługuje multible dispatch?

KaptajnKold
źródło

Odpowiedzi:

16

Wysyłanie wielokrotne nie jest (zawsze) takie samo jak przeciążanie funkcji, chociaż mają pewne podobieństwa. A Java nie obsługuje wielu wysyłek.

W językach o typie statycznym, w tym w Javie, największą różnicą między wysyłką a przeciążeniem jest to, że przeciążenie opiera się na statycznym typie parametrów (tj. Wybór, która metoda jest faktycznie wywoływana, zależy od czasu kompilacji), podczas gdy wysyłka jest oparta na dynamice typy (tzn. decyzja jest podejmowana w czasie wykonywania). (Takie języki zwykle nie obsługują wysyłki wielokrotnej).

Ale z drugiej strony może to być kwestia terminologii. W dynamicznie wpisywanych językach wysyłka i przeciążenie rzeczywiście sprowadzają się do tego samego.

Péter Török
źródło