4.重载,重写

1.什么是重载?oc中不存在重载。

在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数

C++函数名相同是函数的名称相同。参数列表不同指参数的个数或者类型不同。

oc中函数名相同包含函数名称和所有的标签相同。oc不允许同一作用域内的同名函数,因此不允许重载。

即不允许函数名相同,参数个数相同,但类型不同的两个函数存在。

在oc中同一作用域内不允许相同函数名,因此oc中没有严格意义的重载。如:

-(void) test:(int) intValue;
-(void) test:(float) floatValue;
在c++中构成重载,因为函数名test重复,但参数类型不同。在oc中错误,因为函数名都是test,不构成重载
-(void) test:(int) x andY:(int) y;
-(void) test:(int) x andY:(double)y;//错误,还是重名了,函数名都是(test:andY:)
-(void) test:(int) x :(double) y;  //正确,名字不同  (test::)

通过一个方法包含另一个方法,达到类似重载的功能,它们具有不同的函数名。通常用于构造函数,如:

init()

intwithx(){包含对init的调用}

intwithxy().....{包含对initx的调用}

越具体的函数可以在前面已有方法基础上建立


2.什么是重写?

重写发生在子类和父类之间,通过在子类中定义和父类相同方法名的方法,修改从父类继承过来的方法定义。

重写的作用是修改从父类继承过来的方法定义。(继承只能增加,修改,不能减少或者删除父类方法)

重写的要求:包括所有的标签相同即包括了参数个数需要相同,并且返回值要相同。

重写之后的方法查找过程:使用子类指针调用方法时,优先选择子类方法,没有的情况下才寻找父类的方法。

若要直接使用父类方法,使用super.体现了父子之间的多态性,如何寻找父子同名方法



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值