规则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 –