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 的方式被調用的, 但是子類可以調用便利構造器來進行子類初始化