ios - Ios方法重载和方法重写有什么区别

标签 ios objective-c swift overloading overriding

我是 IOS 的新手,谁能告诉我 IOS 中方法重载和覆盖之间的区别是什么。我已经经历过这个但它是 java,我想知道 IOS 的相同之处( objective-c 或 swift,如果可能的话使用一些代码)

What is the difference between method overloading and overriding?

最佳答案

  1. Overloading happens at compile-time while Overriding happens at runtime: 重载方法调用与其定义的绑定(bind)发生在编译时,但重载方法调用与其定义的绑定(bind)发生在运行时

  2. 静态方法可以被重载,这意味着一个类可以有多个同名的静态方法。静态方法不能被覆盖,即使你在子类中声明了相同的静态方法,它与父类的相同方法无关。

  3. 最基本的区别是重载是在同一个类中完成的,而重载则需要基类和子类。重写就是对父类继承的方法进行具体的实现。

  4. 静态绑定(bind)用于重载方法,动态绑定(bind)用于覆盖/覆盖方法。

  5. 性能:与覆盖相比,重载可提供更好的性能。原因是重写方法的绑定(bind)是在运行时完成的。

  6. private 和 final 方法可以重载,但不能被覆盖。这意味着一个类可以有多个同名的私有(private)/ final方法,但子类不能覆盖其基类的私有(private)/ final方法。

  7. 在方法重载的情况下,方法的返回类型无关紧要,可以相同也可以不同。但是,在方法覆盖的情况下,覆盖方法可以具有更具体的返回类型 ( refer this )。

  8. 方法重载时参数列表应该不同。方法重写中的参数列表应该相同。

  9. 重写需要继承,重载不需要。

关于ios - Ios方法重载和方法重写有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33366423/

相关文章:

Swift - 从具有长度的 UnsafePointer<UInt8> 转换为 String

ios - 在离线模式下获取响应

ios - 防止 SKNode 离开 View

objective-c - 声明一个类并声明一个具有相同名称的协议(protocol)有什么用?

ios - 构建 XCTest UI 测试套件的最佳实践是什么?

objective-c - 依赖项中公共(public) header 的 Xcode 搜索路径

ios - iAd 应用程序需要多长时间才能开始产生印象?

iphone - 如何在点击后突出显示电子邮件地址

具有值类型的 JSONSerialization

ios - hidesBarsOnSwipe 禁用左右滑动手势