swift文件筆記 十七 協議

2021-08-14 16:44:15 字數 1382 閱讀 6266

協議就是協議裡的屬性方法,在遵循協議的類·結構體·列舉中,必須要有實現。

1.協議語法

protocol someprotocol //讀寫

var doesnotneedtobesettable: int //唯讀,但實際實現中可以是讀寫

2.構造器要求

你可以在遵循協議的類中實現構造器,無論是作為指定構造器,還是作為便利構造器,你都必須為構造器實現標上required 修飾符。

3.擴充套件和協議

通過擴充套件新增協議一致性(擴充套件型別,不用強制在原型別中,加入方法)

extension dice: textrepresentable

}

通過擴充套件遵循協議(本來不遵循協議的,變成遵循協議)

extension dice: textrepresentable  

協議可以通過擴充套件來為遵循協議的型別提供屬性、方法以及下標的實現。(擴充套件協議)

//基於協議本身來實現這些功能,而無需在每個遵循協議的型別中都重複同樣的實現,也無需使用全域性函式。

//為協議擴充套件新增限制條件,用where 子句來描述,只適用於集合中的元素遵循了textrepresentable協議的情況。

extension randomnumbergenerator where generator.element: textrepresentable  } 

4.協議的繼承

協議能夠繼承乙個或多個其他協議,可以在繼承的協議的基礎上增加新的要求。

你可以在協議的繼承列表中,通過新增class 關鍵字來限制協議只能被類型別遵循,而結構體或列舉不能遵循該協議。class 關鍵字必須第乙個出現在協議的繼承列表中,在其他繼承的協議之前

protocol inheritingprotocol: class, someprotocol, anotherprotocol  

5.可選的協議要求

可選要求用在你需要和objective-c 打交道的**中。

協議和可選要求都必須帶上@objc 屬性。標記@objc 特性的協議只能被繼承自objective-c 類的類或者@objc 類遵循,其他類以及結構體和列舉均不能遵循這種協議。

@objc protocol counterdatasource 

}

swift文件筆記 十一 繼承

乙個類可以繼承另乙個類的方法,屬性和其它特性。當乙個類繼承其它類時,繼承類叫子類,被繼承類叫超類 或父類 不繼承於其它類的類,稱之為基類。swift 中的類並不是從乙個通用的基類繼承而來。如果你不為你定義的類指定乙個超類的話,這個類就自動成為基類。1.重寫 子類可以為繼承來的例項方法,類方法,例項屬...

Swift 學習筆記 協議

如果類含有父類,則應當將父類放在所有的協議之前。協議 protocol oneprotocol或者 var argumentone int 唯讀 var argumenttwo int 讀寫 static var argumentclass int 類 class person oneprotoco...

Swift學習筆記十六 協議

protocol 協議 用於統一方法和屬性的名稱,而不實現不論什麼功能。協議可以被類。列舉。結構體實現。滿足協議要求的類,列舉,結構體被稱為協議的 遵循者。遵循者須要提供 協議指定的成員,如屬性,方法,操作符,下標等。一 協議的基本的語法 咱們還是先上 吧 protocol human var is...