Swift 類別
Swift 類別是建構程式碼所使用的一種通用且靈活的建構體。
我們可以為類別定義屬性(常數、變數)和方法。
與其他程式語言不同的是,Swift 並不要求你為自訂類別去建立獨立的介面和實作檔案。你所要做的是在一個單一文件中定義一個類,系統會自動產生面向其它代碼的外部介面。
類別和結構體對比
Swift 中類別和結構體有許多共同點。共同之處在於:
定義屬性用於儲存值
#定義方法用於提供功能
定義附屬腳本用於存取值
定義建構器用於產生初始化值
透過擴充功能以增加預設實作的功能
符合協定以對某一類別提供標準功能
與結構體相比,類別還有如下的附加功能:
繼承允許一個類別繼承另一個類別的特徵
類型轉換允許在執行時間檢查和解釋一個類別實例的類型
#解構器允許一個類別實例釋放任何其所被指派的資源
#引用計數允許對一個類別的多次引用
#語法:
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("成绩为 \(marks.mark)")
以上程式執行輸出結果為:
成绩为 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)")
以上程式執行輸出結果為:
Mark1 is 300 Mark2 is 400 Mark3 is 900
恆等運算子
#因為類別是引用類型,有可能有多個常數和變數在後台同時引用某一個類別實例。
為了能夠判定兩個常數或變數是否引用同一個類別實例,Swift 內建了兩個恆等運算子:
恆等運算子 | 不恆等運算子 |
---|---|
運算子為:=== | 運算符為:!== |
如果兩個常數或變數引用同一個類別實例則傳回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)") }
以上程式執行輸出結果為:
引用不相同的类实例 SampleClass