重載構(gòu)造函數(shù)
- Swift 中支持函數(shù)重載,同樣的函數(shù)名岳锁,不一樣的參數(shù)類型
/// `重載`構(gòu)造函數(shù)
///
/// - parameter name: 姓名
/// - parameter age: 年齡
///
/// - returns: Person 對象
init(name: String, age: Int) {
self.name = name
self.age = age
super.init()
}
注意事項(xiàng)
- 如果重載了構(gòu)造函數(shù)荸百,但是沒有實(shí)現(xiàn)默認(rèn)的構(gòu)造函數(shù)
init()
初嘹,則系統(tǒng)不再提供默認(rèn)的構(gòu)造函數(shù) - 原因,在實(shí)例化對象時(shí),必須通過構(gòu)造函數(shù)為對象屬性分配空間和設(shè)置初始值躏仇,對于存在必選參數(shù)的類而言,默認(rèn)的
init()
無法完成分配空間和設(shè)置初始值的工作
調(diào)整子類的構(gòu)造函數(shù)
-
重寫
父類的構(gòu)造函數(shù)
/// `重寫`父類構(gòu)造函數(shù)
///
/// - parameter name: 姓名
/// - parameter age: 年齡
///
/// - returns: Student 對象
override init(name: String, age: Int) {
no = "002"
super.init(name: name, age: age)
}
-
重載
構(gòu)造函數(shù)
/// `重載`構(gòu)造函數(shù)
///
/// - parameter name: 姓名
/// - parameter age: 年齡
/// - parameter no: 學(xué)號
///
/// - returns: Student 對象
init(name: String, age: Int, no: String) {
self.no = no
super.init(name: name, age: age)
}
注意:如果是重載的構(gòu)造函數(shù)近速,必須
super
以完成父類屬性的初始化工作
重載
和重寫
-
重載
扭屁,函數(shù)名相同,參數(shù)名/參數(shù)類型/參數(shù)個(gè)數(shù)不同- 重載函數(shù)并不僅僅局限于
構(gòu)造函數(shù)
- 函數(shù)重載是面相對象程序設(shè)計(jì)語言的重要標(biāo)志
- 函數(shù)重載能夠簡化程序員的記憶
- OC 不支持函數(shù)重載嘉冒,OC 的替代方式是
withXXX...
- 重載函數(shù)并不僅僅局限于
-
重寫
曹货,子類需要在父類擁有方法的基礎(chǔ)上進(jìn)行擴(kuò)展,需要override
關(guān)鍵字