星期六, 5月 20, 2017

【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)

參考資料:

0 意見 :

張貼留言

回覆意見時,麻煩輸入一下暱稱
(隨便取個名字也好~ ^_^)
好讓我方便回覆您的問題,
選擇「名稱/網址」輸入您的暱稱,
麻煩一下,謝謝大家。

關閉廣告 [X]