您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Swift中的“ required”关键字是什么意思?

Swift中的“ required”关键字是什么意思?

请参见“自动初始化继承”

如果子类没有定义任何指定的初始化器,它将自动继承其所有超类指定的初始化器。

如果您的子类提供了其所有超类指定初始化器的实现(通过按规则1继承它们,或通过提供自定义实现作为其定义的一部分),则它会自动继承所有超类便利性初始化器。

在您的示例中,子类B没有自行定义任何初始化程序,因此它 继承了的 所有初始化程序A包括所需的初始化程序。如果B仅定义便捷初始化程序(现在已针对 更新),则同样如此:

class B: A {

    convenience init(str : String) {
        self.init(num: Int(str)!)
    }

    func haveFun() {
        print("Woo hoo!")
    }
}

但是,如果子类定义了任何指定的(=非便捷性)初始化器,则它不再继承超类初始化器。特别是所需的初始化器不会被继承,因此不会编译:

class C: A {

    init(str : String) {
        super.init(num: Int(str)!)
    }

    func haveFun() {
        print("Woo hoo!")
    }
}
// error: 'required' initializer 'init(num:)' must be provided by subclass of 'A'

如果您requiredA的init方法删除from,那么类C 也会进行编译。

Swift 2022/1/1 18:15:19 有553人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶