Introducing Swift - Access Control

Introducing Swift - Access Control

本文主要记录在学习Swift中【访问控制】时的笔记。


模块和源文件

Swift中访问控制基于模块,一个framework或者.swift文件都是一个模块,通过import关键字导入。


访问级别分类

  1. public:最高级别,模块内部可以无限制访问任何方法和实体,外界也可以无限制访问该模块内部的方法和实体;
  2. internal:模块内部可以无限制访问任何方法和实体,外部不可见;
  3. private:最低级别,只能在当前源文件中相互访问,模块内和外界均不可见。

默认访问级别为internal。

访问级别的设置不能产生冲突,例如函数访问级别应不低于其参数和参数类型的访问级别,否则函数可访问但参数或参数类型不可访问,产生错误。


访问控制语法

直接通过保留字publicinternalprivate来声明。

注意:如果一个类的访问级别为public,那么所有成员默认访问级别为internal 而不是public


实体的访问级别

元组

遵循最低访问级别原则,即元组访问级别采用其元素中最低访问级别,并且不需要显示定义,只会在使用时推导得到。

函数

遵循最低访问级别原则,通过参数和返回值类型确定,需要显示定义。

枚举

枚举成员继承枚举类型的访问级别,不能单独定义。如果枚举类型定义了原始值或者关联值,那么其访问级别必须不低于枚举类型的访问级别。

嵌套

继承外层访问级别,但是外层如果为public,则默认为internal

子类

子类访问级别不高于父类访问级别。如果一个类的实体不被外界可见,我们可以通过继承并重写该实体,去改变它的访问级别。

常量、变量、属性、下标

以上实体的访问级别不得高于其类型的访问级别。

Access Method

setter的访问级别可以低于getter的访问级别,以此设置实体的读写权限。在varsubscript定义作用域之前,你可以通过private(set)internal(set)先为它门的写权限声明一个较低的访问级别。

初始化

我们可以给自定义的初始化方法指定访问级别,但是必须要低于或等于它所属类的访问级别。但如果该初始化方法是必须要使用的话,那它的访问级别就必须和所属类的访问级别相同。

注意:如果一个类型被声明为public级别,那么默认的初始化方法的访问级别为 internal 。如果你想让无参的初始化方法在其他模块中可以被使用,那么你必须提供一个具有 public 访问级别的无参初始化方法。

协议

如果协议为public访问级别,那么其必须实现的方法都是public级别,此处与上文中其他实体有所不同。

协议继承遵循访问级别继承,子协议访问级别不高于父协议。

采用了协议的类的访问级别遵循它本身和采用协议中最低的访问级别。也就是说如果一个类是 public 级别,采用的协议是 internal 级别,那个采用了这个协议后,该类的访问级别也是 internal 。

如果你采用了协议,那么实现了协议必须的方法后,该方法的访问级别遵循协议的访问级别。比如说,一个 public 级别的类,采用了 internal 级别的协议,那么该类实现协议的方法至少也得是 internal 。

扩展

如果一个扩展采用了某个协议,那么你就不能对该扩展使用访问级别修饰符来声明了。该扩展中实现协议的方法都会遵循该协议的访问级别。

泛型

遵循最低访问级别。

类型别名

一个类型别名的访问级别可以低于或等于这个类型的访问级别。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值