《從零開(kāi)始學(xué)Swift》學(xué)習(xí)筆記(Day 34)——靜態(tài)屬性是怎么回事?

原創(chuàng)文章,歡迎轉(zhuǎn)載。轉(zhuǎn)載請(qǐng)注明:關(guān)東升的博客

我先來(lái)設(shè)計(jì)一個(gè)類(lèi):有一個(gè)Account(銀行賬戶(hù))類(lèi),假設(shè)它有3個(gè)屬性:amount(賬戶(hù)金額)、interestRate(利率)和owner(賬戶(hù)名)。

在這3個(gè)屬性中,amount和owner會(huì)因人而異,不同的賬戶(hù)這些內(nèi)容是不同的,而所有賬戶(hù)的interestRate都是相同的。

amount和owner屬性與賬戶(hù)個(gè)體有關(guān),稱(chēng)為實(shí)例屬性。interestRate屬性與個(gè)體無(wú)關(guān),或者說(shuō)是所有賬戶(hù)個(gè)體共享的,這種屬性稱(chēng)為靜態(tài)屬性或類(lèi)型屬性。

面向?qū)ο箢?lèi)型(結(jié)構(gòu)體、枚舉和類(lèi))都可以定義靜態(tài)屬性,它們的語(yǔ)法格式分別如下所示:

struct 結(jié)構(gòu)體名 {? ? //定義結(jié)構(gòu)體, 結(jié)構(gòu)體中可以定義靜態(tài)存儲(chǔ)屬性和靜態(tài)計(jì)算屬性

static var(或let) 存儲(chǔ)屬性? = "xxx"

...

static var 計(jì)算屬性名: 屬性數(shù)據(jù)類(lèi)型 {

get {

return 計(jì)算后屬性值

}

set (新屬性值) {

...

}

}

}

enum 枚舉名 {? //定義枚舉,枚舉中不可以定義實(shí)例存儲(chǔ)屬性,但可以定義靜態(tài)存儲(chǔ)屬性,也可以定義靜態(tài)計(jì)算屬性

static var(或let) 存儲(chǔ)屬性? = "xxx"

...

static var 計(jì)算屬性名: 屬性數(shù)據(jù)類(lèi)型 {

get {

return 計(jì)算后屬性值

}

set (新屬性值) {

...

}

}

}

class 類(lèi)名 {? ? //定義類(lèi),類(lèi)中不僅可以定義實(shí)例存儲(chǔ)屬性,還可以定義靜態(tài)存儲(chǔ)屬性

static var(或let) 存儲(chǔ)屬性? = "xxx"

...

class(或static)? var 計(jì)算屬性名: 屬性數(shù)據(jù)類(lèi)型 {

get {

return 計(jì)算后屬性值

}

set (新屬性值) {

...

}

}

}

結(jié)構(gòu)體靜態(tài)計(jì)算屬性也可以是只讀的,語(yǔ)法如下:

static var 計(jì)算屬性名: 屬性數(shù)據(jù)類(lèi)型 {

return 計(jì)算后屬性值

}

看一個(gè)Account結(jié)構(gòu)體靜態(tài)屬性示例:

struct Account {//定義Account結(jié)構(gòu)體

var amount: Double = 0.0? ? ? ? ? ? ? ? //賬戶(hù)金額

var owner: String = ""? ? ? ? ? ? ? ? ? //賬戶(hù)名

static var interestRate: Double = 0.0668? //定義靜態(tài)存儲(chǔ)屬性interestRate利率

static var staticProp: Double { //定義靜態(tài)計(jì)算屬性staticProp

return interestRate * 1_000_000

}

var instanceProp: Double { //定義實(shí)例計(jì)算屬性instanceProp

return Account.interestRate * amount

}

}

//訪問(wèn)靜態(tài)屬性

print(Account.staticProp)

var myAccount = Account()

//訪問(wèn)實(shí)例屬性

myAccount.amount = 1_000_000

//訪問(wèn)靜態(tài)屬性

print(myAccount.instanceProp)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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