規則1斯威夫特初始化規則混亂
如果你的子類沒有定義任何指定的初始化程序,它會自動繼承其所有的超指定初始化的。
混亂:我在子類中提供了一個指定的初始化器。它的意思是沒有超類指定的初始化器會歸結爲子類。但我仍然需要編寫覆蓋關鍵字來提供在子類(這意味着超類指定的init歸結爲子類)中的任何超類指定的初始化器的實現。規則1說如果我提供了子類指定的初始化程序,那麼指定的超類將不會下降。 (如果我們沒有提供任何指定的子類的初始化,覆蓋僅有意義。)
class Food{
var name : String
init(foodName :String) {
self.name = foodName
}
}
class RecipieIngredient : Food{
var quantity : Int
init(fName :String, quantity :Int) {
self.quantity = quantity
super.init(foodName: fName)
}
override convenience init (foodName :String){
self.init(fName: foodName, quantity: 1)
}
}
你能提供一個你所指的超類和子類的例子嗎?具體而言,你不清楚你在問什麼。 –
我添加了代碼問題。 @SørenMortensen –