Swift Tips - 访问控制(private & fileprivate & internal & public & open)

在 Swift 语言中,访问修饰符有五种,分别为 privatefileprivateinternalpublicopen

其中 fileprivateopen 是 Swift 3 新添加的。由于过去 Swift 对于访问权限的控制,不是基于类的,而是基于文件的。这样会有问题,所以 Swift 3 新增了两个修饰符对原来的 privatepublic 进行细分。

下面分别说说各种修饰符的范围&区别:

  • privateClass级别
    private 访问级别所修饰的 属性 或者 方法 只能在 当前类 里访问。
    注意:Swift4 中,extension 里也可以访问 private 的属性。
  • fileprivateFile级别
    fileprivate 访问级别所修饰的 属性 或者 方法当前的 Swift 源文件 里可以访问。

  • internalModule级别,Default,internal修饰符可写可不写)

    • internal 访问级别所修饰的 属性方法 在源代码所在的 整个模块 都可以访问。
    • 如果是框架或者库代码,则在整个 框架内部 都可以访问,框架由外部代码所引用时,则不可以访问。
    • 如果是 App 代码,也是在 整个 App 代码,也是在 整个 App 内部 可以访问。
  • public开放级别,但是有些限制
    可以被 任何人 访问。
    ,其他 module 中不可以被 override & 继承 ,而在 module 内可以被 override & 继承

  • open开放级别,无限制
    可以被 任何人 使用,包括 override & 继承

总结,5种修饰符访问权限排序如下:

open > public > interal > fileprivate > private

-------------本文结束感谢您的阅读-------------