黑马程序员技术交流社区
标题:
认清 OC的重载
[打印本页]
作者:
doudou33420
时间:
2014-11-7 14:22
标题:
认清 OC的重载
本帖最后由 doudou33420 于 2014-11-7 14:29 编辑
看视频的时候学到OC和其他语言不一样 是没有重载的 只有重写
但发现某些情况下是可以重载的
例: sumWith:(int)a;
sumWithL(int)a and:(int)b;
复制代码
这样是完全没问题的. 但这就和我们学习的知识冲突了. OC为什么有重载
查了一些资料 发现问题是 OC对函数名的定义:
obj-c中的方法签名是仅依靠各标签来判定的,不像c/c++中,是依赖函数名+参数类型列表
所以你的说法中,改变了第二个参数的描述,实际上就是一个全新的方法签名了
简单的说: OC函数名是由多个参数描述字符串组成的;
明白这点 在看刚刚的重载
sumwith:
sumwith:and
完全是两个函数 两个不同的SEL
所以其实OC是没有重载的,,
当别人问OC有没有重载的时候,, 你立马可以告诉他 我们OC也有重载, 不信我写给你看..(吼吼)
作者:
weizhang00
时间:
2014-11-7 18:56
我觉得还是应该说oc没有重载,毕竟oc是重写一个方法,和自动判断的重载区别很大
起码差了一行if代码
作者:
易拉罐
时间:
2014-11-9 12:48
OC里我不知道,不过我知道java里有重载和重写的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2