- 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()
}
注意事項
- 如果重載了構(gòu)造函數(shù),但是沒有實現(xiàn)默認(rèn)的構(gòu)造函數(shù)
init(),則系統(tǒng)不再提供默認(rèn)的構(gòu)造函數(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ù)個數(shù)不同- 重載函數(shù)并不僅僅局限于
構(gòu)造函數(shù) - 函數(shù)重載是面相對象程序設(shè)計語言的重要標(biāo)志
- 函數(shù)重載能夠簡化程序員的記憶
- OC 不支持函數(shù)重載,OC 的替代方式是
withXXX...
- 重載函數(shù)并不僅僅局限于
-
重寫,子類需要在父類擁有方法的基礎(chǔ)上進行擴展,需要override關(guān)鍵字