Swift - 訪問控制(fileprivate,private,internal,public,open)

在 Swift 語言中,訪問修飾符有五種,分別為 fileprivateprivateinternalpublicopen

其中 fileprivateopen 是 Swift 3 新添加的。由于過去 Swift 對于訪問權限的控制,不是基于類的,而是基于文件的。這樣會有問題,所以 Swift 3 新增了兩個修飾符對原來的 privatepublic 進行細分。

一、各個修飾符區別

1,private

private 訪問級別所修飾的屬性或者方法只能在當前類里訪問。

(注意:Swift4 中,extension 里也可以訪問 private 的屬性。)

!]

2,fileprivate

fileprivate 訪問級別所修飾的屬性或者方法在當前的 Swift 源文件里可以訪問。(比如上面樣例把 private 改成 fileprivate 就不會報錯了)

3,internal(默認訪問級別,internal修飾符可寫可不寫)

  • internal 訪問級別所修飾的屬性或方法在源代碼所在的整個模塊都可以訪問。
  • 如果是框架或者庫代碼,則在整個框架內部都可以訪問,框架由外部代碼所引用時,則不可以訪問。
  • 如果是 App 代碼,也是在整個 App 代碼,也是在整個 App 內部可以訪問。

4,public

可以被任何人訪問。但其他 module 中不可以被 override 和繼承,而在 module 內可以被 override 和繼承。

5,open

可以被任何人使用,包括 override 和繼承。

二、5種修飾符訪問權限排序

從高到低排序如下:


open > public> interal > fileprivate > private

原文出自:www.hangge.com 轉載自原文鏈接:http://www.hangge.com/blog/cache/detail_524.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。