访问控制

1. 访问控制

1.1 private

private访问级别所修饰的属性或者方法只能在当前类里面访问。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
 class A {
    private func test() {
    }
 }

 class B : A {
    func show() {
        test()  // 无法访问
    }
 }

1.2 fileprivate

fileprivate访问级别所修饰的属性或者方法在当前的Swift源文件里可以访问。(比如把上面的private改成fileprivate就不会报错了)

1.3 internal(默认访问级别,internal修饰符可写可不写)

1
2
3
  1. internal访问级别所修饰的属性或方法在源代码所在的整个模块都可以进行访问。
  2. 如果是框架或者库代码,则整个框架内部都可以访问,框架由外部代码所引用时,则不可以访问。
  3. 如果是APP代码,也是整个APP内部可以访问。

1.4 public

可以被任何人访问。但在其他的模块中,不可以被 override 和继承,而在模块内可以被 override 和继承。

1.5 open

可以被任何人使用,包括 override 和继承。

2. 5中修饰符访问权限排序

从高到低排序如下:

1
 open > public > internal > fileprivate > private