屬性分為儲存屬性與計算屬性,儲存屬性可以有預設值,計算屬性則根據已有資訊返回某種計算結果。類,結構體,列舉都可以有屬性
不使用**獲取值的屬性都是基本儲存屬性,包括讀寫屬性(var 宣告)以及唯讀屬性(let宣告)
和巢狀函式一樣,型別也可以巢狀
class
person
//顏色
var color=
color
.black
}
有時候我們不能馬上給儲存屬性賦值,只想當實際使用的時候才會賦值,那麼就可以使用惰性儲存屬性,由於值會改變,所以惰性儲存屬性只能宣告為var。
注意,惰性儲存屬性只會在第一次訪問的時候才會呼叫內部**計算
class
person
//體型
lazy
var size:
size=}
()}
計算屬性提供乙個getter方法獲取屬性的值,並可選地提供乙個setter方法設定屬性的值
class
person
//體型
var size:
size
}set
(newsize)}}
}var person=
person()
print
(person.size)
//middle
person.height=
200print
(person.size)
//big
person.size =
person
.size
.small
;print
(person.size)
//small
屬性觀察只對儲存屬性有用,可以用willset觀察屬性即將發生的變化,使用didset觀察屬性已經發生的變化。
class
person
didset
(oldheight)}}
var person=
person()
person.height=
200//height will change to 200
//height changed,old height is 170
型別屬性和上一節介紹的型別方法一樣,列舉和結構體可以通過static關鍵字來實現型別屬性,類也可以通過static關鍵字實現型別屬性,但是這樣子類就不能覆蓋父類的型別屬性。如果希望子類能覆蓋父類的型別屬性,就需要用class關鍵字實現計算型別屬性。
class
person
}class
worker
:person
}print
(person
.color)
//black
print
(worker
.color)
//white
print
(worker
.height)
//170
print
(worker
.height)
//170
swift提供5個訪問層級對屬性進行訪問控制
訪問層級
可見性繼承性
open
所在模組,引入所在模組的模組
所在模組,引入所在模組的模組
public
所在模組,引入所在模組的模組
所在模組
internal(預設值)
所在模組
所在模組
fileprivate
所在檔案
所在檔案
private
所在作用域
所在作用域
如果屬性既有讀取方法,也有寫入方法,可以單獨為讀寫方法控制可見度
class
person
Swift學習筆記 屬性
定義乙個屬性 struct fixedlengthrange fixedlengthrange這個類裡面有兩個屬性,乙個為 firstvalue int 為可變型別,另外乙個為 length 為不可變型別 屬性賦值 var rangeofthreeitems fixedlengthrange fir...
Swift學習筆記 屬性
swift中屬性是描述特定類 結構或者列舉的值,可以分為以下幾種 1.儲存屬性 stored properties 2.計算屬性 computed properties 3.型別屬性 type properties 儲存屬性 儲存屬性就是例項物件的該屬性不需要自己額外實現方法,直接簡單明瞭 訪問原始...
Swift學習筆記 八 屬性
儲存屬性 儲存常量或變數作為例項的一部分 計算屬性計算 而不是儲存 乙個值。計算屬性 可以用於類 結構體和列舉裡 儲存屬性只能用於類和結構體.儲存屬性 簡單來說,乙個儲存屬性就是儲存在特定類或結構體的例項裡的乙個常量或變數,儲存屬性可以是變數儲存屬性 用關鍵字 var定義 也可以是常量儲存屬性 用關...