Swift - 協議、類擴充(extension)、 存取控制(fileprivate,private,internal,public,open)

來源:互聯網
上載者:User

標籤: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,是一個已有的類型符合某個協議各個修飾符區別
  1. private 存取層級所修飾的屬性或者方法只能在當前類裡訪問。
  2. fileprivate 存取層級所修飾的屬性或者方法在當前的 Swift 源檔案裡可以訪問。
  3. internal(預設存取層級,internal修飾可寫可不寫)
  4.          internal 存取層級所修飾的屬性或方法在原始碼所在的整個模組都可以訪問。
    • 如果是架構或者庫代碼,則在整個架構內部都可以訪問,架構由外部代碼所引用時,則不可以訪問。
    • 如果是 App 代碼,也是在整個 App 代碼,也是在整個 App 內部可以訪問。
  5. public可以被任何人訪問。但其他 module 中不可以被 override 和繼承,而在 module 內可以被 override 和繼承。
  6. open可以被任何人使用,包括override和繼承

 

Swift - 協議、類擴充(extension)、 存取控制(fileprivate,private,internal,public,open)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.