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
的静态类型。
此外,在动态类型面向对象语言中,一项核心思想是,只要对象能够响应您想要发送的消息,您就不必关心对象的类型。因此,基于类型的重载将与此背道而驰。