方法重载和方法重写Ios之间有什么区别

Nes*_*a K 4 overriding overloading objective-c ios swift

我是IOS的新手,任何人都可以告诉IOS中方法重载和覆盖之间有什么区别.我已经完成了这个但是它是java,我想知道IOS一样(目标c或swift,如果可能的话)一些代码)

方法重载和覆盖有什么区别?

Har*_*ani 18

  1. 重载发生在编译时,而Overriding在运行时发生:重载方法调用与其定义的绑定在编译时发生,但是重写方法调用与其定义的绑定在运行时发生.

  2. 静态方法可以重载,这意味着一个类可以有多个同名的静态方法.即使在子类中声明相同的静态方法,它与父类的相同方法无关,也无法重写静态方法.

  3. 最基本的区别是重载是在同一个类中完成的,而重写基类和子类是必需的.重写是关于为父类的继承方法提供特定实现.

  4. 静态绑定用于重载方法,动态绑定用于重写/重写方法.

  5. 性能:与重写相比,重载提供了更好的性能.原因是重写方法的绑定正在运行时完成.

  6. private和final方法可以重载但不能覆盖它们.这意味着一个类可以有多个具有相同名称的私有/最终方法,但子类不能覆盖其基类的私有/最终方法.

  7. 返回类型的方法在方法重载的情况下无关紧要,可以相同或不同.但是,在方法覆盖的情况下,覆盖方法可以具有更具体的返回类型(请参阅此).

  8. 在进行方法重载时,参数列表应该不同.方法Overriding中的参数列表应该相同.

  9. 覆盖需要继承而不是重载.


dea*_*eef -1

方法重载是java或c++中存在的概念,但objective-c中不存在。方法重写在所有语言中都是相同的概念。

  • @Animal Obj-C 方法之间的区别在于名称而不是类型。不存在超载情况。在 Swift 中你绝对可以重载。 (4认同)