Swift中private、fileprivate、public、open和internal許可權程式碼證明詳解
Swift學習中程式碼也寫了很多,但是對於swift中的許可權的定義和使用上真是不明白。很尷尬,所以就抽一時間給寫一下並驗證對他們對定義!然後就寫了下面對結構:
Swift許可權詳解
先做一下總結:
在許可權定義上,從嚴格到寬鬆排序 private \ fileprivate \ internal \ public \ open
。
private : 使用範圍只限於當前定義了變數和方法的 class 類中,以及當前swift檔案額extension擴充套件屬性中(擴充套件屬性另起一個swift檔案,則不行)。且,使用它修飾過的類不能被繼承 ,當然方法也不能被呼叫和重寫。
fileprivate : 使用範圍只限於當前.swift檔案中的類(包含當前swift檔案中另定義的class類)和extentsion擴充套件屬性中(擴充套件屬性另起一個swift檔案,則不行)。且,使用它修飾過的類不能被繼承 ,當然方法也不能被呼叫和重寫。
internal 、 public 、open 他們三個在同一個module中的使用範圍是一樣的。相同點,在相同swift檔案和不同目錄檔案中均可被繼承和重寫與訪問。不同點,internal
在module內部使用,即只可被訪問。public
在moudle外,可被訪問,只能被繼承但內部屬性不能被重寫。open
在module外,可被訪問,既能被繼承且內部屬性也能被重寫。
private 許可權 <類私有>
使用範圍只限於當前定義了變數和方法的 class 類中,以及當前swift檔案額extension擴充套件屬性中(擴充套件屬性另起一個swift檔案,則不行)。且,使用它修飾過的類不能被繼承 ,當然方法也不能被呼叫和重寫。
先看一個Iphone.swift
檔案
從當前的swift檔案看出,private許可權的使用範圍——範圍只限於在當前的swift檔案中,且當前檔案新定義的class類中也無法訪問使用。
在看一個Iphone.swift擴充套件檔案
從這裡擴充套件檔案中看,使用private許可權描述的方法和變數,也不能直接進行訪問。
通過在CurFileTester.swift檔案發現
使用private許可權進行修飾的類,不能被繼承,方法不能被重寫。
fileprivate 許可權 <檔案私有>
使用範圍只限於當前.swift檔案中的類(包含當前swift檔案中另定義的class類)和extentsion擴充套件屬性中(擴充套件屬性另起一個swift檔案,則不行)。且,使用它修飾過的類不能被繼承 ,當然方法也不能被呼叫和重寫。
先看一個Iphone.swift
檔案
當前的swift檔案看出,fileprivate許可權的使用範圍——範圍只限於在當前的swift檔案和當前檔案新定義的class類中。
在看一個Iphone.swift擴充套件檔案
從這裡擴充套件檔案中看,使用private許可權描述的方法和變數,也不能直接進行訪問。
通過在CurFileTester.swift檔案發現
使用fileprivate許可權進行修飾的類,不能被繼承,方法不能被重寫。
Other
**internal** 、 **public** 、**open** 他們三個在同一個module中的使用範圍是一樣的。在相同swift檔案和不同目錄檔案中均可被繼承和重寫與呼叫。
通過在CurFileTester.swift檔案發現
通過在IphoneXSTester.swift檔案發現
通過來自相同和不同目錄資料夾的上面內容便可證實internal許可權、public 許可權和open 許可權 修飾過的類可被繼承,方法可被重寫,變數等均可被訪問
的結論。
還有一點暫時不能程式碼證實的結論是,open和public許可權的區別是,一個元素在其他module中是否只能被訪問或者被override。
因為open的許可權比public更寬泛!而在許可權定義上,從嚴格到寬鬆排序是 private \ fileprivate \ internal \ public \ open
相關文章
- public, private, protected 訪問許可權訪問許可權
- Swift 3.0 的 open,public,internal,fiSwift
- GitHub的Repository許可權將public轉為privateGithub
- C#中public、private、protected、internal、protected internal (轉載)C#
- C++中類繼承public,protected和private關鍵字作用詳解及派生類的訪問許可權C++繼承訪問許可權
- Swift 3必看:新的訪問控制fileprivate和openSwift
- MySQL 許可權詳解MySql
- linux許可權詳解Linux
- DB2 public許可權相關DB2
- java中public,protected,private關鍵字以及預設訪問許可權修飾符的用法細節Java訪問許可權
- django開發之許可權管理(一)——許可權管理詳解(許可權管理原理以及方案)、不使用許可權框架的原始授權方式詳解Django框架
- c# public_protected_private許可權訪問符_屬性訪問器get_setC#
- .NET 程式許可權控制、獲得管理員許可權程式碼
- public_html的許可權問題(轉)HTML
- Windows許可權設定詳解Windows
- 小知識:軟體開發的許可權控制和許可權驗證
- Swift4.0 訪問許可權Swift訪問許可權
- 許可權框架之Shiro詳解框架
- 【詳解】GrantedAuthority(已授予的許可權)
- linux檔案許可權 詳解Linux
- Linux檔案許可權詳解Linux
- 詳解GuassDB資料庫許可權命令:GRANT和REVOKE資料庫
- java中的 public protected friendly privateJava
- Django REST framework中認證和許可權的使用方法DjangoRESTFramework
- linux 檔案許可權 s 許可權和 t 許可權解析Linux
- 【Git】程式碼許可權&分支管理Git
- Oralce public access 許可權的回收後影響分析
- Hadoop 許可權認證Hadoop
- mysql之許可權驗證MySql
- Linux 目錄與許可權詳解Linux
- Linux下開發-許可權詳解Linux
- Oracle中定義者許可權和呼叫者許可權案例分析Oracle
- MySQL的許可權名稱歸納和說明MySql
- Android系統許可權和root許可權Android
- 5行程式碼搞定基於Auth的許可權認證行程
- 用無程式碼解決CRM角色許可權問題
- 一對一原始碼,前端頁面許可權和按鈕許可權控制原始碼前端
- Oracle RAC中的Public IP, VIP和Internal IP,SCANOracle