美文网首页日常阅读
40 Swift中代码访问权限控制

40 Swift中代码访问权限控制

作者: 为了自由的白菜 | 来源:发表于2023-06-24 16:16 被阅读0次

Swift中的代码访问权限控制

模块和源文件

  • 模块指的是独立的代码分发单元,框架或应用程序会作为一个独立的模块来构建和发布。在Swift中,一个模块可以使用import关键字导入另外一个模块
  • 源文件就是Swift中的源代码文件,它通常属于一个模块,即一个应用程序或者框架。尽管我们一般会将不同的类型分别定义在不同的源文件中,但是同一个源文件也可以包含多个类型、函数之类的定义

访问级别

image-20230313215119748.png

潜规则1

  • 如果一个类的访问级别是fileprivate或private那么该类的所有成员都是fileprivate或private(此时成员无法修改访问级别),如果一个类的访问级别是open、internal或者public那么它的所有成员都是internal,类成员的访问级别不能高于类的访问级别(注意:嵌套类型的访问级别也符合此条规则)

潜规则2

  • 常量、变量、属性、下标脚本访问级别低于其所声明的类型级别,并且如果不是默认访问级别(internal)要明确声明访问级别(例如一个常量是一个private类型的类类型,那么此常量必须声明为private或fileprivate)

潜规则3

  • 在不违反1、2两条潜规则的情况下,setter的访问级别可以低于getter的访问级别(例如一个属性访问级别是internal,那么可以添加private(set)修饰将setter权限设置为private,在当前模块中只有此源文件可以访问,对外部是只读的)

潜规则4

  • 必要构造方法(required修饰)的访问级别必须和类访问级别相同,结构体的默认逐一构造函数的访问级别不高于其成员的访问级别(例如一个成员是private那么这个构造函数就是private,但是可以通过自定义来声明一个public的构造函数),其他方法(包括其他构造方法和普通方法)的访问级别遵循潜规则1

怎样创建一个模块

image-20230313222916702.png
  • 这里新建一个模块后,创建一个Human类
image-20230313223130695.png

这里没有导入Teacher

image-20230313223247227.png

如果在其他模块想用Human,需要将Human的类用public修饰

image-20230313223432073.png

如果在外边继承Human, 也不行,public等级不行

image-20230313223509766.png

这里需要将Human的等级修改为open

另外,结构体没有open权限,结构体只能用public

image-20230313223756749.png

如果父类是fileprivate, 那么子类也必须是

image-20230313224015596.png image-20230313224146026.png

上面的错误是HumanSex是内嵌类,并用private修饰,那么超出{}后, 则不能访问

image-20230313224556371.png

如果属性继承于private,那么该属性也必须声明为private

image-20230313224738049.png image-20230313224917097.png

注意此时,外部访问不到age属性

相关文章

  • 第二十三节 Swift 的访问控制

    通过访问控制可以限定其它模块的代码对你代码的访问权限。 Swift 常用三种访问权限: Public:可以访问当前...

  • Swift 访问控制权限

    Swift 访问控制权限 访问控制可以限定其它源文件或模块对你代码的访问。这个特性可以让你隐藏代码的实现细节,并且...

  • 19.访问权限

    swift中的访问权限 Swift 中的访问控制模型基于模块和源文件这两个概念 internal : 在本模块中都...

  • Swift 访问权限问题

    访问控制 访问控制可以限定其他源文件或模块中的代码对你的代码的访问级别 Swift中访问控制模型基于模块和源文件,...

  • Swift中的排序和访问控制fileprivate和open关键

    swift中的访问权限 Swift 中的访问控制模型基于模块和源文件这两个概念internal : 在本模块中都可...

  • Swift 访问控制 ⑭

    1. 访问控制权限 在访问权限控制这块,Swift提供了5个不同的访问控制级别(以下是从高到低排列,实体指被访问级...

  • 密码输入页面的实现-模仿支付宝

    github代码库地址 涉及知识点总结: swift类的继承 swift中权限控制 swift中的懒加载 swif...

  • Swift访问权限:open、public、internal、f

    Swift3.0中访问权限顺序 在Swift3.0中,权限的访问顺序为:open> public > intera...

  • Swift学习笔记二十之访问控制

    1、访问控制:swift中可以对各种类型进行访问控制,从而隐藏代码的实现细节,为其他人访问代码提供接口 //访问控...

  • 十六、访问控制

    访问控制 访问控制 在访问权限控制这块,Swift提供了5个不同的访问级别(以下从高到低排列) open:允许在定...

网友评论

    本文标题:40 Swift中代码访问权限控制

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