Skip to content

Swift 入门(16):访问控制

Swift 提供访问控制(Access Control)来保护代码的内部实现。
通过 openpublicinternalfileprivateprivate 关键字控制作用范围。

1. 五种访问级别

  1. open
    • 最宽松,允许模块外使用,并且可以继承 / 重写。
    • 主要用于 框架对外 API
  2. public
    • 模块外可以使用,但不能继承或重写。
    • 适合对外只读的接口。
  3. internal(默认)
    • 只能在 同一模块 内使用。
    • 一般项目中大部分代码都是 internal
  4. fileprivate
    • 限制在 同一个文件 内访问。
  5. 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 时用 publicopen

本站总访问