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