| 比較 | 類別 (class) | 結構 (struct) | 
|---|---|---|
| 屬性 | O | O | 
| 方法 | O | O | 
| 屬性 | O | O | 
| 建構器 | O | O | 
| 成員逐一建構器 | X | O | 
| 繼承 | O | X | 
| 解構器 | O | X | 
| 型別轉換 | O | X | 
class 類別名 {
    //類別裡的屬性、方法
}
struct 結構名 {
    //結構裡的屬性、方法
}
裡面的常數或是變數為屬性; 而裡面的函式則為方法。
在類別或結構中宣告屬性可以視為給它一個預設的規格,接下來要用就需要先生成實體,接著就能取到預設的屬性。
struct royalStatus { 
    var level = 0   
}
class princess {
    var age = 17
    var name = "Arya Stark"
}
var newPrincess = princess() //生成實體
print("Her name is \(newPrincess.name) and she's \(newPrincess.age)-year-old") //取得屬性

或是將新的值派給實體中的屬性
newPrincess.name = "Sansa Stark"
//印出新值 Her name is Sansa Stark
print("Her name is \(newPrincess.name)")  
利用前面定義的結構生成新的實體
類別實體沒有這個功能
let newStatus = royalStatus(level: 1)
print(newStatus.level) //印出 1
| 比較 | 結構 | 列舉 | 類別 | 
|---|---|---|---|
| 值型別 | V | V | |
| 參考型別 | V | 
值型別在被指派或傳遞後,實際上是做一個 copy 的動作,若做了更改的動作,則新舊兩個值不互相影響; 反之,參考型別因為是存記憶體空間中配置的位置,因此它動到的是實體本身。