oc中对同一个方法是不区分参数的, 所以没有重载这个概念, 但是swift中有重载的概念.区分一下iOS中重载和重写的概念.
OC不支持重载, 认为这个是同一个方法, 入参不作为方法唯一性的部分
- (void)add:(int)num;
- (void)add:(double)num;OC 中, 入参不同, 而方法名一致会报错
Swift支持重载, 入参不同, 方法名一致, 可以正常调用.
一.重载(overload)
在同一个类中,只要方法的方法名相同,那么这几个方法就构成重载。重载方法的参数类型和参数个数可以不同,返回值的类型也可以不同,无法根据返回值类型来判断一个方法是不是重载方法。重载方法的权限可以是是任意权限.
最常见的就是构造方法的重载。
二.重写(override)
重写方法的方法名和方法参数(参数数量,参数类型)必须完全一致。重写方法只能发生在父类和子类之间。
三.重写和重载的区别
- 重写发生在父类和子类之间,重载发生在同一个类中。
- 重写方法的权限必须大于等于原方法的权限,重载方法的权限可以是任意的。
- 重写方法的方法名和方法参数必须完全一致,重载方法的方法名要相同,而方法参数要不同。
- 重写实现的是运行时的多态性,重载实现的是编译时的多态性