【发布时间】:2016-06-30 20:26:52
【问题描述】:
我正在尝试快速学习继承和初始化的概念,并提出了以下代码。 “the swift programming language 2.1”指出,如果子类提供其所有超类指定初始化器的实现,则子类也会自动继承其所有超类便利初始化器。
因此子类“RecipeIngredient”应该继承父类“Food”的convenience init(){ self.init(name: "[unnamed]")。但是这个特别方便的init只初始化了varname,它怎么能初始化子类属性quantity呢?有人可以向我解释一下,当我使用超类convenience init(){ self.init(name: "[unnamed]") 创建子类实例时,子类属性quantity 是如何初始化的?提前感谢您的帮助!
class Food {
var name: String
init(name: String){
self.name = name
}
convenience init() {
self.init(name: "[unnamed]")
}
}
class RecipeIngredient: Food{
var quantity: Int
init(name: String, quantity: Int){
self.quantity = quantity
super.init(name: name)
}
override convenience init(name: String){
self.init(name: name, quantity: 1)
}
}
let ingredientOne = RecipeIngredient()
ingredientOne.name
ingredientOne.quantity
【问题讨论】:
标签: ios swift inheritance subclass superclass