Swift 为代码中的实体提供了五种不同的访问级别。这些访问级别不仅与源文件中定义的实体相关,同时也与源文件所属的模块相关。
- Open 和 Public 级别可以让实体被同一模块源文件中的所有实体访问,在模块外也可以通过导入该模块来访问源文件里的所有实体。通常情况下,你会使用 Open 或 Public 级别来指定框架的外部接口。Open 和 Public 的区别在后面会提到。
- Internal 级别让实体被同一模块源文件中的任何实体访问,但是不能被模块外的实体访问。通常情况下,如果某个接口只在应用程序或框架内部使用,就可以将其设置为 Internal 级别。
- File-private 限制实体只能在其定义的文件内部访问。如果功能的部分细节只需要在文件内使用时,可以使用 File-private 来将其隐藏。
- Private 限制实体只能在其定义的作用域,以及同一文件内的 extension 访问。如果功能的部分细节只需要在当前作用域内使用时,可以使用 Private 来将其隐藏。
Open 只能作用于类和类的成员,它和 Public 的区别如下: - Public 或者其它更严访问级别的类,只能在其定义的模块内部被继承。
- Public 或者其它更严访问级别的类成员,只能在其定义的模块内部的子类中重写。
- Open 的类,可以在其定义的模块中被继承,也可以在引用它的模块中被继承。
- Open 的类成员,可以在其定义的模块中子类中重写,也可以在引用它的模块中的子类重写。
网友评论