知识卡片
访问控制五级模型
内容
Swift的访问控制以模块(代码分发单位,如一个框架)和源文件为坐标划出五个层级,可见范围从宽到窄依次是:open(模块内外都可见且可被继承/重写,专为开放给外部扩展的API设计)、public(模块内外可见但外部不能继承或重写)、internal(默认层级,仅本模块内可见)、fileprivate(仅同一源文件内可见)、private(仅声明所在的作用域内可见)。默认是internal而非最严格的private,因为多数Swift代码写在单一模块内部(如一个完整的App),组件间原本就该互相可见,只有需要收紧或放宽default时才需要显式声明。规则上,一个类型成员的访问级别不能比它所属类型更宽松——暴露的接口不能比容器本身更开放,这是访问控制在类型系统层面保持一致性的硬约束。
参考来源
《Swift编程权威指南》第16章《属性》