class ClassA{
let numA: Int
required init(num: Int) {
numA = num
}
convenience init(bigNum: Bool){
self.init(num: bigNum ? 1000 : 1)
}
}
class ClassB: ClassA {
let numB: Int
required init(num: Int) {
numB = num + 1
super.init(num: num)
}
}
required
强制子类对这个方法重写实现
required修饰符的使用规则:
-
required
修饰符只能用于修饰类初始化方法。 - 当子类含有异于父类的初始化方法时(初始化方法参数类型和数量异于父类),子类必须要实现父类的
required
初始化方法,并且也要使用required
修饰符而不是override
。 - 当子类没有初始化方法时,可以不用实现父类的
required
初始化方法。
convenience
便利构造器, convenience
的初始化方法是不能被子类重写或者是从子类中以 super 的方式被调用的, 但是子类可以调用便利构造器来进行子类初始化