靜態方法與靜態屬性類似,Swift中定義了靜態方法,也稱為類型方法。靜態方法的定義與靜態屬性類似,枚舉和結構體的靜態方法使用的關鍵字是static;類靜態方法使用的關鍵字是class或static,如果使用static定義,則該方法不能在子類中被重寫(override);如果使用class定義,則該方法可以被子類重寫。
結構體靜態方法
看一個結構體靜態方法的示例,代碼如下:
struct Account {
var owner: String = "Tony" //聲明實例屬性賬戶名
static var interestRate: Double = 0.0668 //聲明靜態屬性利率
static func interestBy(amount: Double) -> Double {//定義靜態方法
return interestRate * amount
}
func messageWith(amount: Double) -> String { //定義實例方法
let interest = Account.interestBy(amount)
return "\(self.owner) 的利息是\(interest)"
}
}
//調用靜態方法
print(Account.interestBy(10_000.00))
var myAccount = Account()
//調用實例方法
print(myAccount.messageWith (10_000.00))
枚舉靜態方法
看一個枚舉靜態方法的示例,代碼如下:
enum Account {
case 中國銀行
case 中國工商銀行
case 中國建設銀行
case 中國農業銀行
static var interestRate: Double = 0.0668 //聲明靜態屬性利率
static func interestBy(amount: Double) -> Double { //定義靜態方法
return interestRate * amount
}
}
//調用靜態方法
print(Account.interestBy(10_000.00)) //調用靜態方法
從示例可以看出,結構體和枚舉的靜態方法使用定義沒有區別。
類靜態方法
看一個類靜態方法的示例,代碼如下:
class Account {
var owner: String = "Tony" //賬戶名
//可以換成static
class func interestBy(amount: Double) -> Double {//使用關鍵字class定義靜態方法
return 0.08886 * amount
}
}
//調用靜態方法
print(Account.interestBy(10_000.00)) //調用靜態方法