关于super.init和()的问题

时间:2017-02-13 01:25:55

标签: swift xcode

当你有一个从父类继承的子类时,我很困惑。 第一个问题是为什么要使用super.init?我理解覆盖init,所以它可以覆盖以前从父设置的值,但我不理解super.init的使用.. 第二个问题是为什么init有参数? 编辑:为什么有时候,父类也有一个初始值??

class car {
    var speed = 5
    var model: String?
    var age: Int?

}

class bmw: car {
    override init() {
        super.init()
        model = "cat"
    }

}

1 个答案:

答案 0 :(得分:4)

在您的示例中,没有充分理由调用super。但是一般来说,任何类都可能具有初始化属性和要执行的其他初始任务,并且该规则指出子类的指定初始化程序必须调用超类指定的初始化程序,保证这对于子类和对于子类同时发生。超类。