《從零開始學Swift》學習筆記(Day 34)——靜態屬性是怎麼回事?

原創文章,歡迎轉載。轉載請註明:關東昇的博客php

我先來設計一個類:有一個Account(銀行帳戶)類,假設它有3個屬性:amount(帳戶金額)、interestRate(利率)和owner(帳戶名)。java

在這3個屬性中,amountowner會因人而異,不一樣的帳戶這些內容是不一樣的,而全部帳戶的interestRate都是相同的。微信

amountowner屬性與帳戶個體有關,稱爲實例屬性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

關注智捷課堂微信公共平臺,瞭解最新技術文章、圖書、教程信息
 

更多精品iOSCocos、移動設計課程請關注智捷課堂官方網站:http://www.zhijieketang.com
智捷課堂論壇網站:http://51work6.com/forum.phpcode

相關文章
相關標籤/搜索