【iOS 中文開放式課程】類別與結構 (Classes and Structures)

我們需要您的贊助

https://goo.gl/xIeQ8t





多個函式(特定任務功能)可以打包成一包,可以使用類別或結構包起來。
比如我們寫了一個,可以兩數相乘的乘法函式,也寫了一個可以兩數相除的除法函式。可以將這兩各函式打包起來包在類別與結構中。

類別與結構共同點:

  • 屬性 (property): 定義屬性用於存儲值
  • 方法 (method): 定義方法用於提供功能
  • 下標 (subscript): 定義下標語法來訪問實例所包含的值
  • 建構器 (initializer): 定義構造器用於生成初始化值
  • 擴展 (extension): 通過擴展增加默認實現的功能
  • 協定 (protocol): 實現協議以提供某種標準功能

差異之處,類別還有:

  • 繼承 (inherit): 類別可以繼承另一個類別的功能
  • 型別轉換 (Type casting): 在執行時檢查和轉換一個類別實體的類型
  • 解構器 (deinitializer): 一個類別實體釋放任何其所被分配的資源
  • 參考計數 (Reference counting): 對一個類別實體的多次參考

選擇使用結構的關鍵

  1. 資料少
  2. 指派或傳遞這個實體時,資料是拷貝不是參考
  3. 不需要繼承其他類別功能
若不符合以上三點,就選擇類別

類別與結構格式

class 類別名稱 {
    定義類別內的屬性、方法等內容
}

struct 結構名稱 {
    定義結構內的屬性、方法等內容
}
範例
struct Resolution {
    var width = 0
    var height = 0
}

class VideoMode {
    var resolution = Resolution()
    var interlaced = false
    var frameRate = 0.0
    var name: String?
}

實體化

let mResolution = Resolution()
let mVideoMode = VideoMode()

獲取屬性值

實體名後面緊跟屬性名,兩者通過點(.)連接
print("\(mResolution.width)")
//0

指派屬性值

mVideoMode.resolution.width = 1280

結構建構器設定初始化

注意:類別實體沒有成員逐一建構器這個功能。
let vga = Resolution(width:640, height: 480)

參考資料:

這個網誌中的熱門文章

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

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

nano 文字編輯器

16天記下7000單字

startActivityForResult is deprecated 已廢棄替代解決方式