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) {
//為初始化值需要實現init
        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
文章轉載自:http://www.runoob.com/swift/swift-classes.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容