Swift-Private/FilePrivate/Public/Open的作用和区别

来源:互联网 发布:双卡手机如何选择网络 编辑:程序博客网 时间:2024/06/16 18:56

原来 Swift 中有2种常用访问控制关键字(访问控制修饰符),分别为 private 和 public。而在 Swift 3.0+,又在原来的基础上新增了两种:fileprivate、open。它们可以看成是对 private 和 public 的进一步细分。


用一张图区分四种修饰符的访问权限

这里写图片描述


1、private 修饰符

只允许在当前类中调用,不包括 Extension
private 现在变为了真正的私有访问控制
用 private 修饰的方法不可以被代码域之外的地方访问


2、fileprivate 修饰符

fileprivate 其实就是过去的 private。
其修饰的属性或者方法只能在当前的 Swift 源文件里可以访问。
即在同一个文件中,所有的 fileprivate 方法属性都是可以访问到的。

class A {    fileprivate func test(){        print("this is fileprivate func!")    }}class B:A {    func show(){        test()    }}

3、public 修饰符

修饰的属性或者方法可以在其他作用域被访问
但不能在重载 override 中被访问
也不能在继承方法中的 Extension 中被访问


4、open 修饰符

open 其实就是过去的 public,过去 public 有两个作用:

修饰的属性或者方法可以在其他作用域被访问
修饰的属性或者方法可以在其他作用域被继承或重载 override


从高到低排序如下:

open > public > fileprivate > private

0 0
原创粉丝点击