黑马程序员技术交流社区

标题: OC中有没有方法重载? [打印本页]

作者: 张中付    时间: 2015-8-24 22:39
标题: OC中有没有方法重载?
OC中有没有方法重载?如果没有,那是怎么做到区别下面的:
-(void)setAge:(int )age:(NSString *)name;
-(void)setAge:(int)age andName:(NSString *)name;
作者: Jo_    时间: 2015-8-24 23:51
没有重载,只有重写
作者: 张中付    时间: 2015-8-25 08:40
Jo_ 发表于 2015-8-24 23:51
没有重载,只有重写

为什么子类继承父类时,可以直接重写父类方法,不加什么关键字。。。
作者: 张中付    时间: 2015-8-25 08:42
Jo_ 发表于 2015-8-24 23:51
没有重载,只有重写

那上面两行代码怎么区分方法名的呀
作者: smilejoke    时间: 2015-8-25 08:50
这两行代码的方法名应该是不同的吧。
作者: 毛强    时间: 2015-8-25 09:14
OC中的重载应该是指参数个数不同,但是返回类型后面的名字相同
作者: 15095185209    时间: 2015-8-25 09:36
应该是重写吧!
作者: Eil.tea    时间: 2015-8-25 10:22
看看视频就知道了,函数名不是setAge,而是 setAge:  :,setAge: andName:,所以不是重载,而且C#没有方法的重载。
作者: 张中付    时间: 2015-8-25 10:46
Eil.tea 发表于 2015-8-25 10:22
看看视频就知道了,函数名不是setAge,而是 setAge:  :,setAge: andName:,所以不是重载,而且C#没有方法的 ...

恩恩,方法名不一样,OC没有重载
作者: 张中付    时间: 2015-8-25 10:48
smilejoke 发表于 2015-8-25 08:50
这两行代码的方法名应该是不同的吧。

是不一样,方法名不一样所以说oc没有重载
作者: tangbinbin    时间: 2015-8-25 11:45
就相当于名字一样,但是性别不一样一个道理,,,没有方法重载的,视频讲义里专门讲到这一点
作者: iphone    时间: 2015-8-25 14:25
有方法重载  可以直接重写方法就行了
作者: 庞佳星    时间: 2015-8-25 16:43
oc没有方法重载,有类方法,可以对原来的类的方法重写,也可以新增一些方法。还有非正式协议,可以重写NSObject,和foundation里边的方法。
而继承的方法重写只是一种较简单的方法重写。
-(void)setAge:(int )age:(NSString *)name;
-(void)setAge:(int)age andName:(NSString *)name
这两者的方法名不一样,在调用的时候完全能够体现出来。
一个是setAge::
另外一个是setAge: andName:注意冒号也算
而且前面的加减也要看清楚,一个是类方法,一个是对象方法
作者: 张中付    时间: 2015-8-25 17:20
庞佳星 发表于 2015-8-25 16:43
oc没有方法重载,有类方法,可以对原来的类的方法重写,也可以新增一些方法。还有非正式协议,可以重写NSOb ...

很清楚,你是第11期的吗
作者: Jo_    时间: 2015-8-25 22:38
张中付 发表于 2015-8-25 08:42
那上面两行代码怎么区分方法名的呀

方法名是不同的:
setAge:  :
setAge: andName:
作者: 手心的温度    时间: 2015-8-25 22:45
OC中没有重载!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2