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

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

這個網誌中的熱門文章

nano 文字編輯器

16天記下7000單字

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

Android Studio 歷代版本下載點

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