【发布时间】:2019-02-20 09:33:32
【问题描述】:
据我所知,静态函数是静态调度的,最终类函数也是静态调度的(因为最终函数不能被覆盖 - 就像静态函数一样)。但是,究竟有什么区别。有吗?
【问题讨论】:
-
no.. 那是类 func,不是最终类 func :)
标签: swift
据我所知,静态函数是静态调度的,最终类函数也是静态调度的(因为最终函数不能被覆盖 - 就像静态函数一样)。但是,究竟有什么区别。有吗?
【问题讨论】:
标签: swift
仅仅因为 final 类函数不能被覆盖并不意味着它是静态调度的。最终类函数将覆盖超类非最终类函数。这样的方法调用必须是动态调度的。
static 只是final class 的别名。它们的行为相同:
class C1 { class func foo() {} }
class C2: C1 { override final class func foo() {} }
class C3: C1 { override static func foo() {} }
【讨论】: