Swift 中的继承和扩展

标签 inheritance swift covariance

怎么做inheritanceextensions在 Swift 中交互?更详细地说,为父类(super class)定义的扩展是否自动可用于子类?在那种情况下,是否存在差异问题(例如,如果扩展类型在扩展中显示为返回类型)?

最佳答案

继承和扩展如您所料相互作用。给定两个类 FooBar这样 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/

相关文章:

c++ - 如何复制 shared_ptr 的 vector ?

java - 类图的替代方案

html - 尝试将宽度继承到 css 中的 img 标签

swift - 连接 Swift 自定义键盘中的按钮时出错

c++ - 返回 shared_ptr 时如何实现协变返回类型?

c# - 如何使用 protobuf-net 代理序列化继承链中的类型?

ios - 具有转义闭包的 Swift 泛型函数

ios - 从 UITableViewCell 呈现 UIAlertController

java - 逆变方法参数类型

algorithm - 等效于数学公式的 matlab 代码(特征脸算法的协方差矩阵)