美文网首页
访问控制

访问控制

作者: 奋斗的小马达 | 来源:发表于2021-12-16 09:12 被阅读0次

    一、在访问权限控制这块,Swift提供了5个不同的访问级别(以下是从高到低排列, 实体指被访问级别修饰的内容)

    popen:允许在定义实体的模块、其他模块中访问,允许其他模块进行继承、重写(open只能用在类、类成员上)

    public:允许在定义实体的模块、其他模块中访问,不允许其他模块进行继承、重写

    internal:只允许在定义实体的模块中访问,不允许在其他模块中访问

    fileprivate:只允许在定义实体的源文件中访问

    private:只允许在定义实体的封闭声明中访问

    绝大部分实体默认都是 internal

    二、访问级别的使用准则

    一个实体不可以被更低访问级别的实体定义,比如
    1、变量\常量类型 ≥ 变量\常量
    2、参数类型、返回值类型 ≥ 函数
    3、父类 ≥ 子类
    4、父协议 ≥ 子协议
    5、原类型 ≥ typealias
    6、原始值类型、关联值类型 ≥ 枚举类型
    7、定义类型A时用到的其他类型

    解释
    1、变量\常量类型 ≥ 变量\常量

    如下图 截屏2021-12-15 下午3.41.29.png

    变量类型 Persion 的访问级别是 fileprivate
    变量 p 的访问级别是 internal
    因为 internal > fileprivate
    所以会报错

    其他相同

    三、元组的访问级别 是元组内访问界别最低的

    元组类型的访问级别是所有成员类型最低的那个

    internal struct Dog {}
    fileprivate class Person {}
    // (Dog, Person)的访问级别是fileprivate
    fileprivate var data1: (Dog, Person)
    private var data2:(Dog, Person)
    

    相关文章

      网友评论

          本文标题:访问控制

          本文链接:https://www.haomeiwen.com/subject/tplpfrtx.html