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
強制子類對這個方法重寫實現(xiàn)
required修飾符的使用規(guī)則:
-
required修飾符只能用于修飾類初始化方法。 - 當子類含有異于父類的初始化方法時(初始化方法參數(shù)類型和數(shù)量異于父類),子類必須要實現(xiàn)父類的
required初始化方法,并且也要使用required修飾符而不是override。 - 當子類沒有初始化方法時,可以不用實現(xiàn)父類的
required初始化方法。
convenience
便利構(gòu)造器, convenience 的初始化方法是不能被子類重寫或者是從子類中以 super 的方式被調(diào)用的, 但是子類可以調(diào)用便利構(gòu)造器來進行子類初始化