我试图了解两者之间的区别(如果有)。
根据Wikipedia页面上的Multiple Dispatch,它是Function Overloading的同义词,但随后继续说:
用只有一次调度的语言,例如Java […]
这似乎是一个矛盾,因为Java确实支持函数重载。
那是什么呢?Multiple Dispatch与Function Overloading是否不同,或者该文章是否声称Java不支持Multible Dispatch是错误的?
我试图了解两者之间的区别(如果有)。
根据Wikipedia页面上的Multiple Dispatch,它是Function Overloading的同义词,但随后继续说:
用只有一次调度的语言,例如Java […]
这似乎是一个矛盾,因为Java确实支持函数重载。
那是什么呢?Multiple Dispatch与Function Overloading是否不同,或者该文章是否声称Java不支持Multible Dispatch是错误的?
Answers:
尽管多次分派确实具有一些相似之处,但它们(总是)与函数重载不同。而且Java不支持多重调度。
在包括Java在内的静态类型语言中,分派和重载之间的最大区别在于,重载基于静态类型的参数(即,实际调用哪种方法的选择取决于编译时),而分派则基于动态类型。类型(即运行时做出的决定)。(此类语言通常不支持多重分派。)
但是话又说回来,这可能是术语问题。在动态类型的语言中,调度和重载确实可以归结为同一件事。