一、Swift的访问控制
Swift 中的访问控制模型基于模块和源文件这两个概念
-
模块
指的是Framework 或App bundle 。在Swift 中,可以用import 关键字引入自己的工程。
-
源文件
指的是Swift 中的Swift File ,就是编写Swift 代码的文件,它通常是属于某一个模块。
Swift提供了三种不同的访问级别:
-
Public :【使用public 修饰】【范围大】 可以访问当前模块及其他模块中的任何实体(通常用于Framework )
-
Internal :【使用internal 修饰】【范围中】 可以访问当前模块中的任何实体,但是在模块外无法访问,这是所有实体的默认访问级别(通常在一个单目标Application 中不需要自行设置访问级别)
-
Private :【使用private 修饰】【范围小】 只能访问当前源文件中的实体,用作隐藏某些功能的实现细节
访问级别从低到高:Private < Internal < Public
访问控制的使用规则挺多的,我这里进行了概括:
- 【成员(属性和方法) <= 类】
- 【(常量、变量、属性、下标脚本) <= 类型】
- 【Setter <= Getter】
- 【required方法 == 类】【默认逐一构造函数 <= 所有成员】
- 【子类 <= 父类】【子协议 <= 父协议】
- 子类重写父类成员修改访问范围
- 【协议成员 == 协议】【类 >= 协议】【协议实现 >= 协议要求】
- 【元组 = Min(所有元素类型)】
- 【函数 = Min(参数类型,返回值类型)】
- 【枚举成员 == 枚举】【(原始值,关联值) >= 枚举】
- 【泛型类型 = Min(类类型,泛型参数)】
- 【类型别名 <= 原类型】
二、访问控制使用规则详解
1.【成员(属性和方法) <= 类】
2.【(常量、变量、属性、下标脚本) <= 类型】
3.【Setter <= Getter】
4.【required方法 == 类】【默认逐一构造函数 <= 所有成员】
5.【子类 <= 父类】【子协议 <= 父协议】
6. 子类重写父类成员修改访问范围
7.【协议成员 == 协议】【类 >= 协议】【协议实现 >= 协议要求】
8.【元组 = Min(所有元素类型)】
9.【函数 = Min(参数类型,返回值类型)】
10.【枚举成员 == 枚举】【(原始值,关联值) >= 枚举】
11.【泛型类型 = Min(类类型,泛型参数)】
12.【类型别名 <= 原类型】
|
请发表评论