# Swift 類
Swift 類是構建代碼所用的一種通用且靈活的構造體。
我們可以為類定義屬性(常量、變量)和方法。
與其他編程語言所不同的是,Swift 并不要求你為自定義類去創建獨立的接口和實現文件。你所要做的是在一個單一文件中定義一個類,系統會自動生成面向其它代碼的外部接口。
## 類和結構體對比
Swift 中類和[結構體](/swift/swift-structures.html)有很多共同點。共同處在于:
* 定義屬性用于存儲值
* 定義方法用于提供功能
* 定義附屬腳本用于訪問值
* 定義構造器用于生成初始化值
* 通過擴展以增加默認實現的功能
* 符合協議以對某類提供標準功能
與結構體相比,類還有如下的附加功能:
* 繼承允許一個類繼承另一個類的特征
* 類型轉換允許在運行時檢查和解釋一個類實例的類型
* 解構器允許一個類實例釋放任何其所被分配的資源
* 引用計數允許對一個類的多次引用
### 語法:
```
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
```
- Swift 簡介
- Swift 環境搭建
- Swift 基本語法
- Swift 數據類型
- Swift 變量
- Swift 可選(Optionals)類型
- Swift 常量
- Swift 字面量
- Swift 運算符
- Swift 條件語句
- Swift if 語句
- Swift if...else 語句
- Swift if...else if...else 語句
- Swift 嵌套 if 語句
- Swift switch 語句
- Swift 循環
- Swift for-in 循環
- Swift for 循環
- Swift While 循環
- Swift repeat...while 循環
- Swift Continue 語句
- Swift Break 語句
- Swift Fallthrough 語句
- Swift 字符串
- Swift 字符(Character)
- Swift 數組
- Swift 字典
- Swift 函數
- Swift 閉包
- Swift 枚舉
- Swift 結構體
- Swift 類
- Swift 屬性
- Swift 方法
- Swift 下標腳本
- Swift 繼承
- Swift 構造過程
- Swift 析構過程
- Swift 可選鏈
- Swift 自動引用計數(ARC)
- Swift 類型轉換
- Swift 擴展
- Swift 協議
- Swift 泛型
- Swift 訪問控制