Swift-访问权限
2022-09-03 本文已影响0人
Sweet丶
一、private:
- 表示私有的,除了局部变量其它都可以修饰。
- private修饰全局变量、全局函数、枚举、结构体、类,作用同fileprivate,表示同文件可访问。
- private修饰的枚举、结构体、类,其内部的成员默认是fileprivate类型的。
- 枚举、结构体、类,其内部的成员使用private修饰时,表示该成员只能在它类型声明内部和同文件中自身的扩展访问(包含内部的嵌套类型)。
- 扩展不使用访问权限修饰时,默认跟类型声明一致;其内部的成员默认访问权限跟扩展一致;
扩展使用private修饰时,同fileprivate,内部成员默认是fileprivate;
扩展内部的成员使用private修饰时,只能在扩展内部和同文件中类型声明及同文件中同类型的其他扩展中访问。
二、fileprivate: 表示文件私有,即同一文件可以访问,文件外不可访问
三、internal: 表示同一模块内(即同意target中)可访问
1.全局(变量、函数、计算属性)、枚举、类、结构体、扩展、协议的默认访问权限。
2.枚举、结构体、类声明了public或open,那么内部的属性成员还是默认internal的。
四、public: 公开的,允许跨模块访问,用于修饰类时,这个类不能被继承,修饰属性、方法时表示不能被重写。
五、open: 只能用来修饰类和类中属性方法,表示所有模块可以访问,并且可以继承、重写。
六、子类重写父类的成员
1.子类声明权限时,子类权限不能大于父类
2.子类只能重写在父类中自己访问权限内的成员,且重写后,该成员访问权限必须不小于父类
3.子类中可以重新声明在父类中私有的成员,并且父类的这个成员也在子类的内存中。
七、协议不使用访问权限修饰时,默认internal,协议内部成员访问权限跟随协议,不能单独设置。