Множина диспетчеризації та перевантаження функцій


14

Я намагаюся зрозуміти різницю (якщо вона є) між ними.

Як повідомляє сторінка Вікіпедії для множинної диспетчеризації, вона є синонімом перевантаження функцій, але згодом продовжує говорити:

Мовою, що має лише одну розсилку, наприклад Java […]

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

Так що це? Чи відрізняється декілька диспетчерів від функцій перевантаження, чи стаття неправильна у тому, що Java не підтримує функцію Multiple Dispatch?

Відповіді:


16

Багаторазове відправлення не завжди (завжди) те саме, що перевантаження функцій, хоча вони мають певну схожість. І Java не підтримує багаторазову доставку.

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

Але знову ж таки, це може бути питанням термінології. У динамічно набраних мовах диспетчеризація та перевантаження справді, схоже, зводяться до одного і того ж.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.