我正在通过Swift apprentice第三版工作。
这本书快速跳过了所需的初始化器。
如果我有一个超类:
class Animal {
let animalType: String
required init(animalType: String) {
self.animalType = animalType
}
convenience init(animal: Animal) {
self.init(animalType: animal.animalType)
}
}
然后是像这样的子类:
class WildAnimal: Animal {
let name: String
required init(animalType: String) {
name = ""
super.init(animalType: animalType)
}
}
初始化子类的唯一方法是在所需的init中分配占位符的值。也就是说,我必须把name = "“。
如果父类有一个必需的初始化,那么在初始化过程中有没有办法初始化子类的参数?
发布于 2019-06-10 00:32:39
您可以有多个初始值设定项。您还需要“覆盖”所需的父初始值设定项。
class WildAnimal: Animal {
var name: String
required init(animalType: String) {
name = ""
super.init(animalType: animalType)
}
init(animalType: String, name: String) {
self.name = name
super.init(animalType: animalType)
}
}
强制子类定义de required
初始化器是required
的意义所在。
在定义类初始值设定项之前编写所需的修饰符,以指示类的每个子类都必须实现该初始值设定项
https://stackoverflow.com/questions/56516275
复制相似问题