多次调度与函数重载


14

我试图了解两者之间的区别(如果有)。

根据Wikipedia页面上的Multiple Dispatch,它是Function Overloading的同义词,但随后继续说:

用只有一次调度的语言,例如Java […]

这似乎是一个矛盾,因为Java确实支持函数重载。

那是什么呢?Multiple Dispatch与Function Overloading是否不同,或者该文章是否声称Java不支持Multible Dispatch是错误的?

Answers:


16

尽管多次分派确实具有一些相似之处,但它们(总是)与函数重载不同。而且Java不支持多重调度。

在包括Java在内的静态类型语言中,分派和重载之间的最大区别在于,重载基于静态类型的参数(即,实际调用哪种方法的选择取决于编译时),而分派则基于动态类型。类型(即运行时做出的决定)。(此类语言通常不支持多重分派。)

但是话又说回来,这可能是术语问题。在动态类型的语言中,调度和重载确实可以归结为同一件事。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.