/// 類中如果有非可選屬性,需要進行處理;要么聲明的時候就直接初始化,要么提供初始化方法來初始化聲明的非可選變量
class Animal: NSObject {
/// 存儲屬性:值的獲取和存儲通過自身完成,不依賴其他的變量
// 名字
var name: String, // 提供初始化方法進行初始化
age: Int = 0 // 聲明的時候直接初始化
// 可選屬性沒有初始化默認值是 nil
var address: String?,
postCode: Int?
/// 計算屬性(讀、寫):不通過變量自己本身進行值的獲取和存儲,值的獲取和存儲依賴其他變量,計算屬性需要聲明類型,同時,計算屬性不能使用 let 關鍵字
var virtualAge: Int {
get {
return age
}
// 可以聲明一個變量,也可以不聲明變量,使用 `newValue` 代替
// set (myValue) {
// age = myValue * 4
//}
set {
age = newValue * 4
}
}
/// 計算屬性(只讀),計算屬性需要聲明類型
var actualAge: Int {
get {
return age * 8
}
}
/// 計算屬性(只讀),計算屬性需要聲明類型
/// 省略 get
var virtual: Int {
return age * 8
}
/// 計算屬性(只讀),計算屬性需要聲明類型
/// 省略 return
var actual: Int {
age * 8
}
// 初始化方法
init(_ nameStr: String) {
self.name = nameStr
}
}
計算屬性跟存儲屬性的區(qū)別:
- 計算屬性值的獲取跟存儲不是由自身完成的,需要其他的存儲屬性。即計算屬性本身是不能存儲屬性的;
- 存儲屬性值的存儲通過自身就可以完成;