【iOS笔记#11】Swift访问控制级别

489 阅读1分钟

【iOS笔记】iOS笔记系列目录

Swift 有五个级别的访问控制权限,从高到底依次为比如 open, public, internal, fileprivate, private。

他们遵循的基本原则是:
高级别的变量不允许被定义为低级别变量的成员变量,比如一个 private 的 class 中不能含有 public 的 String。反之,低级别的变量却可以定义在高级别的变量中,比如 public 的 class 中可以含有 private 的 Int。

  • open 具备最高的访问权限。其修饰的类和方法可以在任意 Module 中被访问和继承;它是 Swift 3 中新添加的访问权限。

  • public 的权限仅次于 open。与 open 唯一的区别在于它修饰的对象可以在任意 Module 中被访问,但仅能在当前的Module中被继承。

  • internal 是默认的权限。它表示只能在当前定义的 Module 中访问和继承,它可以被一个 Module 中的多个文件访问,但不可以被其他的 Module 中被访问。

  • fileprivate 也是 Swift 3 新添加的权限。其被修饰的对象只能在当前文件中被使用。例如它可以被一个文件中的 class,extension,struct 共同使用。

  • private 是最低的访问权限。它的对象只能在定义的作用域内使用。离开了这个作用域,即使是同一个文件中的其他作用域,也无法访问,但是在extension可以访问。