Appearance
Swift 入门(16):访问控制
Swift 提供访问控制(Access Control)来保护代码的内部实现。
通过open、public、internal、fileprivate、private关键字控制作用范围。
1. 五种访问级别
- open
- 最宽松,允许模块外使用,并且可以继承 / 重写。
- 主要用于 框架对外 API。
- public
- 模块外可以使用,但不能继承或重写。
- 适合对外只读的接口。
- internal(默认)
- 只能在 同一模块 内使用。
- 一般项目中大部分代码都是
internal。
- fileprivate
- 限制在 同一个文件 内访问。
- private
- 最严格,限制在 同一个作用域(类 / 结构体)内使用。
2. 使用示例
swift
open class OpenClass {
open func openMethod() {}
public func publicMethod() {}
internal func internalMethod() {}
fileprivate func filePrivateMethod() {}
private func privateMethod() {}
}
let obj = OpenClass()
obj.publicMethod() // ✅ 可访问
obj.internalMethod() // ✅ 同模块可访问
// obj.filePrivateMethod() ❌ 其他文件不可访问
// obj.privateMethod() ❌ 作用域外不可访问3. 常见使用场景
- open:SDK / Framework 提供可继承的基类。
- public:模块对外公开的常量或函数。
- internal:默认级别,适合大部分业务代码。
- fileprivate:隐藏某些工具函数。
- private:保护类内部细节。
4. 注意事项
- 属性、方法、初始化器、扩展都可以设置访问级别。
- 子类的访问级别不能高于父类。
- 协议的访问级别会影响其实现。
总结
- Swift 默认访问级别是
internal。 - 最常用的是
internal+private,只在需要开放 API 时用public或open。