【從零開始學 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 線上教室,臉書粉絲團,會不定期發佈相關資訊,不想錯過最新資訊,不要忘記來按讚,加追蹤喔!也歡迎大家將這套課程分享給更多人喔。

我們下次再見囉!!!掰掰~

這個網誌中的熱門文章

2023 最新入門零基礎 Kotlin教學【從零開始學 Kotlin 程式設計】Kotlin 教學課程目錄 (Android Kotlin, IntelliJ IDEA, Android Studio, Android APP 開發教學)

2023 最新 Android 教學【開發 Android APP 手機應用程式:使用 kotlin 程式語言】教學課程目錄 (Android Kotlin, Android Studio, Android APP 開發教學)

2022 最新入門零基礎 Flutter教學 【Flutter 程式設計入門實戰 30 天】Flutter 教學課程目錄 (IntelliJ IDEA 開發教學)

nano 文字編輯器