Swift . protocol /init 初始化器要求

Lin
2 min readOct 16, 2018

--

protocol可以要求遵循protocol的類型實現指定的初始化器,和一般的初始化器一樣,只用將初始化器寫在協議的定義中,不需要寫大括號,也就是初始化器的實體

你可以透過實現指定初始化器或便捷初始化器來使遵循該協議的類滿足協議的初始化器要求。在這兩種情況下,你都必須使用 required 關鍵字修飾初始化器的實現(如果 class 已被加上final,則不需要為其內的初始化器加上required,因為 final 類別不能再被子類別繼承)

如果一個子類重寫了父類指定的初始化器,並且遵循協議實現了初始化器要求,那麼就要為這個初始化器的實現加上 required 和 override 兩個修飾符:

因為protocol自身並不實現功能,但是所創建的Protocol,可以變為一個功能完備的類型在程式碼中使用。,由於它是一個類型,你可以在很多其他類型可以使用的地方使用協議,像是:

  • 在函數、方法或者初始化器裡作為形式參數類型或者返回類型;
  • 作為常數、變數或者屬性的類型;
  • 作為數組、字典或者其他存儲器的元素的類型

--

--