iOS中的重载和重写

本文介绍了Objective-C与Swift中方法重载和重写的概念。在Objective-C中,由于不区分参数类型,不存在方法重载,两个方法即使参数不同,如果名字相同也会导致编译错误。而在Swift中,方法可以被重载,允许方法名相同但参数不同。重写(override)则特指在父类和子类之间,方法名和参数必须完全一致。重写强调运行时多态,重载则实现编译时多态。
摘要由CSDN通过智能技术生成

oc中对同一个方法是不区分参数的, 所以没有重载这个概念, 但是swift中有重载的概念.区分一下iOS中重载和重写的概念.

OC不支持重载, 认为这个是同一个方法, 入参不作为方法唯一性的部分

- (void)add:(int)num;
- (void)add:(double)num;

OC 中, 入参不同, 而方法名一致会报错 

Swift支持重载, 入参不同, 方法名一致, 可以正常调用. 

 一.重载(overload)

在同一个类中,只要方法的方法名相同,那么这几个方法就构成重载。重载方法的参数类型和参数个数可以不同,返回值的类型也可以不同,无法根据返回值类型来判断一个方法是不是重载方法。重载方法的权限可以是是任意权限.

最常见的就是构造方法的重载。

二.重写(override)
重写方法的方法名和方法参数(参数数量,参数类型)必须完全一致。重写方法只能发生在父类和子类之间。

三.重写和重载的区别

  1. 重写发生在父类和子类之间,重载发生在同一个类中。
  2. 重写方法的权限必须大于等于原方法的权限,重载方法的权限可以是任意的。
  3. 重写方法的方法名和方法参数必须完全一致,重载方法的方法名要相同,而方法参数要不同。
  4. 重写实现的是运行时的多态性,重载实现的是编译时的多态性
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值