構造函數是一種特殊的函數,主要用來在創建對象時初始化對象,爲對象成員變量設置初始值,在 OC 中的構造函數是 initWithXXX,在 Swift 中由於支持函數重載,所有的構造函數都是 init
- 非 Optional 屬性,都必須在構造函數中設置初始值,從而保證對象在被實例化的時候,屬性都被正確初始化
- 在調用父類構造函數之前,必須保證本類的屬性都已經完成初始化
- Swift 中的構造函數不用寫 func
子類的構造函數
- 自定義子類時,需要在構造函數中,首先爲本類定義的屬性設置初始值
- 然後再調用父類的構造函數,初始化父類中定義的屬性
/// 工程師類
class Engineer: Person {
var no: String
override init() {
no = "001"
super.init()
}
}
小結
- 先調用本類的構造函數初始化本類的屬性
- 然後調用父類的構造函數初始化父類的屬性
- super.init() 必須放在本類屬性初始化的後面,保證本類屬性全部初始化完成
Optional 屬性
- 將對象屬性類型設置爲 Optional
class Person: NSObject {
/// 姓名
var name: String?
/// 年齡
var age: Int?
}
- 可選屬性不需要設置初始值,默認初始值都是 nil
- 可選屬性是在設置數值的時候才分配空間的,是延遲分配空間的,更加符合移動開發中延遲創建的原則