Swift4.0有open, public, internal, fileprivate, private五种访问权限,它们都可以修饰方法和属性。
不同点在于:
- 是否可以被子类继承访问
- 同文件不同类下是否可以访问
- 不同文件是否可以被访问
- 不同组件下是否可以被访问
private
私有访问权限。被private修饰的属性和方法,仅可以在本类中使用。即使同文件下的不同类也是不能调用的。继承的子类也不能调用。
fileprivate
文件私有访问权限。顾明思义,fileprivate和private 区别同文件的属性和方法是可以调用的。
internal
默认权。模块内部可以访问。
public
公有访问权限。类或者类的公有属性或者公有方法可以从文件或者模块的任何地方进行访问。注意:APP中引用的第三方框架是一个完整的模块,其他模块不能直接访问。
open
公开权限, 最高的权限。可以被任何module和文件访问和继承重写。
则访问权限
open > public > internal > fileprivate > private
权限 | open | public | internal | fileprivate | private |
---|---|---|---|---|---|
子类继承访问 | √ | √ | √ | ||
同文件下的不同类是否可以访问 | √ | √ | √ | √ | |
同组件不同文件是否可以访问 | √ | √ | √ | ||
不同组件下是否可以被访问 | √ |