一尘不染

Swift-必须由子类覆盖的类方法

swift

是否有一种标准方法可以在Swift中制作“纯虚函数”,即。一个 必须 由每个子类中被覆盖,并且,如果不是的话,将导致编译时错误?


阅读 634

收藏
2020-07-07

共1个答案

一尘不染

您有两种选择:

1.使用协议

将超类定义为协议而不是类

Pro :编译时检查每个“子类”(不是实际的子类)是否实现了所需的方法

缺点 :“超类”(协议)无法实现方法或属性

2.声明该方法的超级版本

例:

class SuperClass {
    func someFunc() {
        fatalError("Must Override")
    }
}

class Subclass : SuperClass {
    override func someFunc() {
    }
}

Pro :可以在超类中实现方法和属性

缺点 :不检查编译时间

2020-07-07