Swift 類是構(gòu)建代碼所用的一種通用且靈活的構(gòu)造體。
我們可以為類定義屬性(常量、變量)和方法。
與其他編程語言所不同的是,Swift 并不要求你為自定義類去創(chuàng)建獨立的接口和實現(xiàn)文件。你所要做的是在一個單一文件中定義一個類,系統(tǒng)會自動生成面向其它代碼的外部接口。
Swift 中類和結(jié)構(gòu)體有很多共同點。共同處在于:
定義屬性用于存儲值
定義方法用于提供功能
定義附屬腳本用于訪問值
定義構(gòu)造器用于生成初始化值
通過擴展以增加默認實現(xiàn)的功能
符合協(xié)議以對某類提供標準功能
與結(jié)構(gòu)體相比,類還有如下的附加功能:
繼承允許一個類繼承另一個類的特征
類型轉(zhuǎn)換允許在運行時檢查和解釋一個類示例的類型
解構(gòu)器允許一個類示例釋放任何其所被分配的資源
引用計數(shù)允許對一個類的多次引用
class classname {
Definition 1
Definition 2
……
Definition N
}class student{
var studname: String
var mark: Int
var mark2: Int
}示例化類:
let studrecord = student()
import Cocoa
class MarksStruct {
var mark: Int
init(mark: Int) {
self.mark = mark
}
}
class studentMarks {
var mark = 300
}
let marks = studentMarks()
print("成績?yōu)?nbsp;\(marks.mark)")以上程序執(zhí)行輸出結(jié)果為:
成績?yōu)?nbsp;300
類的屬性可以通過 . 來訪問。格式為:示例化類名.屬性名:
import Cocoa
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()
print("Mark1 is \(marks.mark1)")
print("Mark2 is \(marks.mark2)")
print("Mark3 is \(marks.mark3)")以上程序執(zhí)行輸出結(jié)果為:
Mark1 is 300 Mark2 is 400 Mark3 is 900
因為類是引用類型,有可能有多個常量和變量在后臺同時引用某一個類示例。
為了能夠判定兩個常量或者變量是否引用同一個類示例,Swift 內(nèi)建了兩個恒等運算符:
| 恒等運算符 | 不恒等運算符 |
|---|---|
| 運算符為:=== | 運算符為:!== |
| 如果兩個常量或者變量引用同一個類示例則返回 true | 如果兩個常量或者變量引用不同一個類示例則返回 true |
import Cocoa
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")
if spClass1 === spClass2 {// false
print("引用相同的類示例 \(spClass1)")
}
if spClass1 !== spClass2 {// true
print("引用不相同的類示例 \(spClass2)")
}以上程序執(zhí)行輸出結(jié)果為:
引用不相同的類示例 SampleClass