標籤:string 區別 ext 檔案 protocol 下標指令碼 問控制 靜態 屬性
1,Swift中協議類似於別的語言裡的介面,協議裡只做方法的聲明,包括方法名、傳回值、參數等資訊,而沒有具體的方法實現。
protocol Person { //讀寫屬性 var name:String{get set} //唯讀屬性 var age:Int{get} //類型方法 static func method1() //執行個體方法 func method2() -> Int //突變方法 mutating func method3() }
2,協議可以繼承另一個協議
protocol Animal { func move()}protocol Bird:Animal{ func song()}class Chiken: Bird { func song() { print("gege") } func move() { print("run") }}
3,如果某個類集繼承了某個父類,又遵循了某個協議,那麼冒號後面應該先寫父類,再寫協議
class CC:繼承的父類, 協議1, 協議2{}
類擴充(extension)1,給已有的類添加計算屬性和計算靜態屬性2,定義新的執行個體方法和類方法3,提供新的構造器4,定義下標指令碼5,是一個已有的類型符合某個協議各個修飾符區別
- private 存取層級所修飾的屬性或者方法只能在當前類裡訪問。
- fileprivate 存取層級所修飾的屬性或者方法在當前的 Swift 源檔案裡可以訪問。
- internal(預設存取層級,internal修飾可寫可不寫)
internal 存取層級所修飾的屬性或方法在原始碼所在的整個模組都可以訪問。
- 如果是架構或者庫代碼,則在整個架構內部都可以訪問,架構由外部代碼所引用時,則不可以訪問。
- 如果是 App 代碼,也是在整個 App 代碼,也是在整個 App 內部可以訪問。
- public可以被任何人訪問。但其他 module 中不可以被 override 和繼承,而在 module 內可以被 override 和繼承。
- open可以被任何人使用,包括override和繼承
Swift - 協議、類擴充(extension)、 存取控制(fileprivate,private,internal,public,open)