怎么做inheritance和 extensions在 Swift 中交互?更详细地说,为父类(super class)定义的扩展是否自动可用于子类?在那种情况下,是否存在差异问题(例如,如果扩展类型在扩展中显示为返回类型)?
最佳答案
继承和扩展如您所料相互作用。给定两个类 Foo
和 Bar
这样 Bar <: Foo
, Foo 中可用的方法和 Foo 的扩展对 Bar 可用。至于方差问题,子类可能会覆盖方法并提供更具体的返回类型。例如这里是Bar
重写 baz
具有协变类型
class Foo {
func baz() -> Foo {
return Foo()
}
}
class Bar : Foo {
override func baz() -> Bar {
return Bar()
}
}
扩展中的方法还不能被覆盖,但同样的原则适用。
关于Swift 中的继承和扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26672847/