Swift中Access控制相关关键字

open

最高访问权限(即限制最少),所属module或导入该module的地方都能访问open。只能修饰class和class memeber。

public

所属module或导入该module的地方都能访问open。但是对于子类的影响和open不同:

  • 非open修饰的class,只能在定义的module中继承;open修饰的不受限制
  • 非open修饰的class member,只能在定义的module中重载;open修饰的不受限制

internal

默认权限,只在定义的module内使用;用于app或framework的内部实现

file-private

只在定义的源文件中使用,同一app/framework下的其它文件不能访问

private

只在声明的区域内使用;同一文件中超出区域,不能访问,限制最严格。

最后,附上工程:SwiftAccessControlTest, 实践是最好的学习方法,没有之一。