# 重載構(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()
}

注意事項

  • 如果重載了構(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...
  • 重寫,子類需要在父類擁有方法的基礎(chǔ)上進行擴展,需要 override 關(guān)鍵字
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容