【问题标题】:What is the difference between static func and final class func in swiftswift中的static func和final class func有什么区别
【发布时间】:2019-02-20 09:33:32
【问题描述】:

据我所知,静态函数是静态调度的,最终类函数也是静态调度的(因为最终函数不能被覆盖 - 就像静态函数一样)。但是,究竟有什么区别。有吗?

【问题讨论】:

标签: swift


【解决方案1】:

仅仅因为 final 类函数不能被覆盖并不意味着它是静态调度的。最终类函数将覆盖超类非最终类函数。这样的方法调用必须是动态调度的。

static 只是final class 的别名。它们的行为相同:

class C1 { class func foo() {} }
class C2: C1 { override final class func foo() {} }
class C3: C1 { override static func foo() {} }

【讨论】:

  • 是的,正确,我在提出问题后发现了这个......谢谢兄弟
  • “Static”是“final class”的别名:stackoverflow.com/a/29206635/1187415,所以应该没有区别。
  • 有趣!他们也可以覆盖父类方法!
  • 因此静态和最终类函数都可以安全地推断为静态调度
  • @angshuknag 不,它们都是动态调度的。否则,重载将如何工作?
猜你喜欢
  • 2018-05-01
  • 1970-01-01
  • 2010-09-16
  • 2012-06-28
  • 1970-01-01
  • 2013-10-28
  • 2020-05-13
  • 2020-04-14
相关资源
最近更新 更多