原創文章,歡迎轉載。轉載請註明:關東昇的博客php
我先來設計一個類:有一個Account(銀行帳戶)類,假設它有3個屬性:amount(帳戶金額)、interestRate(利率)和owner(帳戶名)。java
在這3個屬性中,amount和owner會因人而異,不一樣的帳戶這些內容是不一樣的,而全部帳戶的interestRate都是相同的。微信
amount和owner屬性與帳戶個體有關,稱爲實例屬性。interestRate屬性與個體無關,或者說是全部帳戶個體共享的,這種屬性稱爲靜態屬性或類型屬性。網站
面向對象類型(結構體、枚舉和類)均可以定義靜態屬性,它們的語法格式分別以下所示:spa
struct 結構體名 { //定義結構體, 結構體中能夠定義靜態存儲屬性和靜態計算屬性 static var(或let) 存儲屬性 = "xxx" ... static var 計算屬性名: 屬性數據類型 { get { return 計算後屬性值 } set (新屬性值) { ... } } } enum 枚舉名 { //定義枚舉,枚舉中不能夠定義實例存儲屬性,但能夠定義靜態存儲屬性,也能夠定義靜態計算屬性 static var(或let) 存儲屬性 = "xxx" ... static var 計算屬性名: 屬性數據類型 { get { return 計算後屬性值 } set (新屬性值) { ... } } } class 類名 { //定義類,類中不只能夠定義實例存儲屬性,還能夠定義靜態存儲屬性 static var(或let) 存儲屬性 = "xxx" ... class(或static) var 計算屬性名: 屬性數據類型 { get { return 計算後屬性值 } set (新屬性值) { ... } } }
結構體靜態計算屬性也能夠是隻讀的,語法以下:.net
static var 計算屬性名: 屬性數據類型 { return 計算後屬性值 }
看一個Account結構體靜態屬性示例:設計
struct Account {//定義Account結構體 var amount: Double = 0.0 //帳戶金額 var owner: String = "" //帳戶名 static var interestRate: Double = 0.0668 //定義靜態存儲屬性interestRate利率 static var staticProp: Double { //定義靜態計算屬性staticProp return interestRate * 1_000_000 } var instanceProp: Double { //定義實例計算屬性instanceProp return Account.interestRate * amount } } //訪問靜態屬性 print(Account.staticProp) var myAccount = Account() //訪問實例屬性 myAccount.amount = 1_000_000 //訪問靜態屬性 print(myAccount.instanceProp)
歡迎關注關東昇新浪微博@tony_ 關東昇。rest
關注智捷課堂微信公共平臺,瞭解最新技術文章、圖書、教程信息
更多精品iOS、Cocos、移動設計課程請關注智捷課堂官方網站:http://www.zhijieketang.com
智捷課堂論壇網站:http://51work6.com/forum.phpcode