重寫屬性的getter/setter方法
- 示例1 :
var _name: String?
var name: String?{
get{
return _name
}
set{
_name = newValue // 只要外界通過對象給name賦值, 值就會保存在newValue中
}
} - 示例2 :
var gender: String?{
// didSet方法在屬性設置完值之后調(diào)用, swift中使用didSet方法來代替setter方法
didSet{
// 代碼塊
}
} - 示例3 :
var age: Int{
get{
return 30 // 如果在一個屬性中, 只重寫了get方法, 那么我們稱之為計算型屬性(只讀屬性), 且計算型屬性不占用內(nèi)存空間
}
}
備注: 命名空間
在Swift中, 如果想使用某一個類, 是不用import頭文件的; 因為Swift中新增一個"命名空間"的概念, 只要是在同一個命名空間的文件, 資源都是共享的; 默認情況下項目名稱就是命名空間(查看命名空間可以print(self))
Swift中的構(gòu)造方法:
- 注意
1.如果定義一個屬性的時候沒有初始化, 那么必須在后面加上一個?
2.Swift要求屬性是必須有初始值的
3.只要在構(gòu)造方法中對屬性進行初始化, 那么屬性的后面可以不寫? - 自定義構(gòu)造方法 (Swift中有方法重載的概念, 允許有同名的方法, 只要形參或者返回值不同即可)
var name: String?
var age: Int = 0
// 如果定義了一個"對象屬性", 那么后面可以寫上?
// 如果是定義一個"基本的數(shù)據(jù)類型", 那么最后直接賦值為0
// 因為super.init()方法在分配內(nèi)存空間的時候, 當發(fā)現(xiàn)一個屬性是可選類型, 并且是對象的時候, 會給其分配內(nèi)存空間; 如果發(fā)現(xiàn)一個屬性是可選類型, 但是基本數(shù)據(jù)類型的時候, 就不會給該屬性分配存儲空間, 這個時候可能會使程序crash掉
init(name: String, age: Int){
self.name = name
self.age = age
}
注意: 如果寫了自定義構(gòu)造方法, 并且沒有重寫了父類的構(gòu)造方法; 那么必須使用自定義的構(gòu)造方法