【发布时间】:2010-12-14 22:07:23
【问题描述】:
Objective-C 不支持方法重载。
为什么?
是否可行,但苹果决定不实施?还是由于Objective-C的动态特性而不可行?
我的印象是方法重载可以在编译语言(Java、C#)上完成,而不能在解释性语言(Ruby、Python)上完成。
有些是真的吗?
【问题讨论】:
Objective-C 不支持方法重载。
为什么?
是否可行,但苹果决定不实施?还是由于Objective-C的动态特性而不可行?
我的印象是方法重载可以在编译语言(Java、C#)上完成,而不能在解释性语言(Ruby、Python)上完成。
有些是真的吗?
【问题讨论】:
此处相关的区别不是编译语言和解释语言之间的区别,而是静态类型(Java、C#)和动态类型(Ruby、Python、Objective-C)之间的区别。在动态类型语言中,类型信息通常直到运行时才知道。在运行时,Objective-C 中的所有对象都静态类型为id。
此外,动态类型的 OO 语言的核心思想是,只要对象响应您要发送的消息,您就不必关心对象是什么类型。因此,基于类型的重载将与此背道而驰。
【讨论】: