Swift中的访问权限管理是通过关键字来实现的,可以设置为public、internal、fileprivate、private。这些关键字指定了类、结构体、枚举、变量、常量、函数等的访问级别。
-
public:最高级别的访问权限,可以在任何文件中使用、继承、重写、引用。一般用于最重要的公共接口,如果一个类型或成员被标记为public,则默认情况下,在其他模块中都可以访问。
-
internal:默认访问级别,可以在当前模块中访问,但是在其他模块中无法访问。如果一个类型或成员被标记为internal,则默认情况下,在同一模块的其他文件中都可以访问。
-
fileprivate:文件私有访问级别,只有在当前文件中可访问,其他文件中无法访问。
-
private:私有访问级别,只有在当前作用域中可访问,例如在类中,私有成员只能在同一个类的方法或计算属性中访问,不能在扩展中访问。
例如:
public class MyClass {
fileprivate var filePrivateVar: String = "filePrivateVar"
private var privateVar: String = "privateVar"
internal var internalVar: String = "internalVar"
public func func1() {
print(filePrivateVar)
print(privateVar)
print(internalVar)
}
}
class AnotherClass {
func func2() {
let myClass = MyClass()
print(myClass.internalVar)
print(myClass.filePrivateVar) // Error: 'filePrivateVar' is fileprivate
print(myClass.privateVar) // Error: 'privateVar' is private
}
}