在 Swift 中類(lèi)是建立靈活的構(gòu)建塊。類(lèi)似于常量,變量和函數(shù),用戶(hù)可以定義的類(lèi)的屬性和方法。Swift給我們提供了聲明類(lèi),而無(wú)需用戶(hù)創(chuàng)建接口和實(shí)現(xiàn)文件的功能。Swift 允許我們創(chuàng)建類(lèi)作為單個(gè)文件和外部接口,將默認(rèn)在類(lèi)一次初始化來(lái)創(chuàng)建。
繼承獲得一個(gè)類(lèi)的屬性到其他類(lèi)
類(lèi)型轉(zhuǎn)換使用戶(hù)能夠在運(yùn)行時(shí)檢查類(lèi)的類(lèi)型
初始化器需要處理釋放內(nèi)存資源
引用計(jì)數(shù)允許類(lèi)實(shí)例有一個(gè)以上的參考
屬性被定義為存儲(chǔ)值
下標(biāo)被定義為提供訪(fǎng)問(wèn)值
方法被初始化來(lái)改善功能
初始狀態(tài)是由初始化函數(shù)定義
功能被擴(kuò)大,超出默認(rèn)值
確認(rèn)協(xié)議功能標(biāo)準(zhǔn)
Class classname {
Definition 1
Definition 2
---
Definition N
}
class student{
var studname: String
var mark: Int
var mark2: Int
}
創(chuàng)建一個(gè)實(shí)例的語(yǔ)法:
let studrecord = student()
class MarksStruct {
var mark: Int
init(mark: Int) {
self.mark = mark
}
}
class studentMarks {
var mark = 300
}
let marks = studentMarks()
println("Mark is \(marks.mark)")
當(dāng)我們使用 playground 運(yùn)行上面的程序,我們得到以下結(jié)果
Mark is 300
類(lèi)屬性可使用 '.' 語(yǔ)法來(lái)訪(fǎng)問(wèn)。屬性名稱(chēng)由 "." 分離在實(shí)例名后。
class MarksStruct {
var mark: Int
init(mark: Int) {
self.mark = mark
}
}
class studentMarks {
var mark1 = 300
var mark2 = 400
var mark3 = 900
}
let marks = studentMarks()
println("Mark1 is \(marks.mark1)")
println("Mark2 is \(marks.mark2)")
println("Mark3 is \(marks.mark3)")
當(dāng)我們使用 playground 運(yùn)行上面的程序,得到以下結(jié)果
Mark1 is 300 Mark2 is 400 Mark3 is 900
在 Swift 引用多個(gè)常量和變量指向的單個(gè)實(shí)例。要了解常量和變量指向一個(gè)特定的類(lèi)實(shí)例標(biāo)識(shí)操作符的使用。 類(lèi)實(shí)例總是通過(guò)引用傳遞。在類(lèi)NSString,NSArray 和 NSDictionary 實(shí)例始終分配作為參考傳遞到現(xiàn)有的實(shí)例,而不是使用一個(gè)副本。
| 等同運(yùn)算符 | 不相同操算符 |
| 使用的操作符是 (===) | 使用的操作符是 (!==) |
| 當(dāng)兩個(gè)常量或變量指向同一個(gè)實(shí)例返回true | 當(dāng)兩個(gè)常數(shù)或變量指向一個(gè)不同的實(shí)例返回true |
class SampleClass: Equatable {
let myProperty: String
init(s: String) {
myProperty = s
}
}
func ==(lhs: SampleClass, rhs: SampleClass) -> Bool {
return lhs.myProperty == rhs.myProperty
}
let spClass1 = SampleClass(s: "Hello")
let spClass2 = SampleClass(s: "Hello")
spClass1 === spClass2 // false
println("\(spClass1)")
spClass1 !== spClass2 // true
println("\(spClass2)")
當(dāng)我們使用 playground 運(yùn)行上面的程序,得到以下結(jié)果
main.SampleClass main.SampleClass