open,public,internal,fileprivate,private。html
其中 fileprivate 和 open 是 Swift 3 新添加的。因爲過去 Swift 對於訪問權限的控制,不是基於類的,而是基於文件的。這樣會有問題,因此 Swift 3 新增了兩個修飾符對原來的 private、public 進行細分。框架
private 訪問級別所修飾的屬性或者方法只能在當前類裏訪問。 (注意:Swift4 中,extension 裏也能夠訪問 private 的屬性。)ide
fileprivate 訪問級別所修飾的屬性或者方法在當前的 Swift 源文件裏能夠訪問。(好比上面樣例把 private 改爲 fileprivate 就不會報錯了)htm
internal 訪問級別所修飾的屬性或方法在源代碼所在的整個模塊均可以訪問。blog
若是是框架或者庫代碼,則在整個框架內部均可以訪問,框架由外部代碼所引用時,則不能夠訪問。排序
若是是 App 代碼,也是在整個 App 代碼,也是在整個 App 內部能夠訪問。繼承
能夠被任何人訪問。但其餘 module 中不能夠被 override 和繼承,而在 module 內能夠被 override 和繼承。get
能夠被任何人使用,包括 override 和繼承。io
原文出自:www.hangge.com 轉載請保留原文連接:www.hangge.com/blog/cache/…class
open > public > interal > fileprivate > private