iOS中的重载和重写

Posted 想名真难

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS中的重载和重写相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

 一.重载(overload)

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

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

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

三.重写和重载的区别

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

以上是关于iOS中的重载和重写的主要内容,如果未能解决你的问题,请参考以下文章

java中重载有啥用

Java中的重载和重写的区别

深入理解Java中的重写和重载

重载和重写的区别与联系

重写覆盖重载多态几个概念的区别分析

java中的重载和重写