【從零開始學 Swift 程式設計】類別與結構
【從零開始學 Swift 程式設計】線上免費講義課程目錄
物件導向 - 類別/結構示意圖
類別與結構的定義
struct AccountStruct{
//struct 可以設定或不設定初值
var id:String = "0001"
var name:String = "HKT"
var balance:Int = 1000
}
class AccountClass{
//需要設定初值或nil
var id:String = "0001"
let name:String = "HKT"
var balance:Int = 1000
}
類別與結構實體化
var accountStruct = AccountStruct()
let accountClass = AccountClass()
獲取屬性值
print(accountStruct.balance)
print(accountClass.balance)
設定屬性值
accountStruct.balance = 100
accountClass.balance = 100
print(accountStruct.balance)
print(accountClass.balance)
//結構提供構造方法,類別沒有
let someStruct = AccountStruct(balance:66)
print(accountStruct.balance)
結構屬於「值類型」
值類型會儲存實際的值
var accountStruct1 = AccountStruct(balance:888)
//結構屬於「值類型」
var accountStruct2 = accountStruct1
accountStruct1.balance = 666
accountStruct2.balance = 999
print(accountStruct1.balance)
print(accountStruct2.balance)
此圖片取自:The Swift Programming Language - Structures and Classes
類別屬於「參考類型」
參考類型只是儲存在記憶體同個位置
let accountClass1 = AccountClass()
//類別屬於「參考類型」
var accountClass2 = accountClass1
accountClass1.balance = 100
accountClass2.balance = 200
print(accountClass1.balance)
print(accountClass2.balance)
此圖片取自:The Swift Programming Language - Structures and Classes
類別與結構差異點
- 繼承:類別可以繼承另一個類別的內容
- 型別轉換:允許在執行時檢查和轉換一個類別實體的型別
- 解構器:允許一個類別實體釋放任何其所被分配的資源
- 參考計數:允許對一個類別多次參考
類別與結構相同點
- 屬性:儲存資料值
- 方法:提供方法功能
- 下標:存取值 (getter 和 setter)
- 建構器:初始化值
- 擴展:增加額外功能
- 協定:提供標準功能
結構使用時機
- 封裝的資料少且用途簡單
- 不需要去繼承另一個類型別屬性與方法
- 指定或傳遞資料要求是值型別(value type),不是參考型別(reference type)
參考資料
The Swift Programming Language - Structures and Classes
https://docs.swift.org/swift-book/LanguageGuide/ClassesAndStructures.html
那這次的課程就介紹到這邊囉~
順帶一提,KT 線上教室,臉書粉絲團,會不定期發佈相關資訊,不想錯過最新資訊,不要忘記來按讚,加追蹤喔!也歡迎大家將這套課程分享給更多人喔。
我們下次再見囉!!!掰掰~