2017-02-13 73 views
-1

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

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

} 

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

} 
+2

欢迎来到Stack Overflow。不要用一个不相关的问题替代另一个。正确的程序是接受第一个问题的答案(或不),并提出一个新的,单独的问题。谢谢。 – matt

回答

4

在你的例子中,没有很好的理由叫super。但是一般来说,任何类都可能有属性来初始化和执行其他初始任务,而规则说明子类的指定初始化程序必须调用超类指定的初始化程序,以确保这将对子类和子类都一致地发生超类。