2017-02-13 74 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。但是一般來說,任何類都可能有屬性來初始化和執行其他初始任務,而規則說明子類的指定初始化程序必須調用超類指定的初始化程序,以確保這將對子類和子類都一致地發生超類。