在swift3.0之后,swift提供了open, public, internal fileprivate, private五种控制访问权限的修饰符。
private:(最低级别的权限)私有,修饰类的话当前文件可访问,修饰变量的话,实体内部或者extension内可访问
internal:模块内访问(模块:框架或独立的应用程序)
fileprivate:定义实体(class, struct, enum等)的源文件内访问
public: 公共访问,在模块内和模块外(通过import)都可以 访问
open: (最高级别的权限): 模块内和外都可以访问(同public), 只能修饰类和类内部的成员,不能修饰struct、enum等
访问级别由高到低的顺序:open > public > internal > fileprivate > private
public和open的区别
1. 除open外,public以及访问级别小于public的修饰符,修饰的类和类成员只能在定义的模块内被继承和被override
2. open修饰的类和类成员,在定义模块内,还有模块之外(import进来),都可以被继承和被override
网友评论