在 Objective-C 中,類是唯一能定義方法的類型。
Swift中類/結構體/枚舉都能定義方法
。在 Swift 語言中,實例方法是屬于某個特定類、結構體或者枚舉類型實例的方法。-
實例方法特性
- 實例方法要寫在它所屬的類型的前后大括號({})之間
- 實例方法能夠隱式訪問它所屬類型的所有的其他實例方法和屬性
- 實例方法只能被它所屬的類的某個特定實例調用
- 實例方法不能脫離于現存的實例而被調用
函數的參數可同時有內部參數名(內部使用)和外部參數名(調用函數時使用)。當只有內部參數名時,編譯器會為參數自動創建一個和內部參數名相同的外部參數名。
實例方法的參數前面加"_",則調用時必須省略外部名稱
class Person {
var _name: String = "HaRi"
var _age: Int = 26
//如果不希望某個參數作為外部參數使用, 可以在參數前面加上 _ , 忽略外部參數
func setName(name: String, _ age: Int)
{
_name = name
_age = age
}
func show()
{
print("name = \(_name) age = \(_age)")
}
}
var p = Person()
p.show()
// p.setName(name:"xiaoHan", age:100) Error!
p.setName(name: "hjq", 88) //正確姿勢
p.show()
- 類中用
class/static
關鍵字來聲明類方法
class Person {
var _name:String = "kong"
// 實例方法
func sayHello(){
println("say \(_name)")
}
// 類方法
class func sayHi() {
println("class method")
}
}
// 調用 實例方法
var per = Person()
per.sayHello()
// 調用類方法
Person.sayHi()
以上也可以用static聲明類方法,static聲明的類方法不可被子類重寫
static func sayHi() {
println("class method")
}
- 結構體和枚舉中用static關鍵字聲明類方法
struct Person4 {
var name: String = "HanJunqiang"
static var card: String = "1234567"
func show()
{
print("name = \(name) card = \(Person4.card)")
}
static func staticShow()
{
//類方法中沒有self
//靜態方法對應OC中的+號方法, 和OC一樣在類方法中不能訪問非靜態屬性
print("card = \(Person4.card)")
}
}
var p4 = Person4()
p4.show()
Person4.staticShow()