Day25:权限控制

Day25:权限控制,第1张

模块和源文件 模块指的是独立代码分发单元,框架或应用程序或作为一个独立的模块来构建和发布。在swift中,一个模块可以使用import关键字倒入另外一个模块。源文件就是swift中的源代码文件,它通常属于一个模块,即一个应用程序或者框架。尽管我们一般会将不同类型分别定义子啊不同的源文件中,但是同一个源文件也可以包含多个类型、函数之类的定义。 访问级别 open:公开权限,最高的权限,可以被其他模块访问,继承以及复写。只能用于类和类的成员。public:公开访问权限,类或者类的公有属性或者公有方法可以从文件或者模块的任何地方进行访问。那么什么样才能成为一个模块呢?一个app就是一个模块,一个第三方API,第三方框架等都是一个完整的模块。这些模块如果要对外留有访问的属性或者方法,就应该使用public的访问权限。public的权限在swift3.0后无法在其他模块被复写方法/属性或被继承。internal:有着internal访问权限的属性和方法说明在模块内部可以访问,超出模块内部就不可以被访问了。在swift中默认就是internal访问权限。fileprivate:文件私有访问权限,被fileprivate修饰的类或者类的属性或方法可以在同一个物理文件中访问。如果超出该物理文件,那么有着fileprivate访问权限的类,属性和方法就不能被访问。private:私有访问权限,被private修饰的类或者类的属性或方法可以在同一物理文件中的同一个类型(包含extension)访问。如果超出该物理文件或不属于同一个类型,那么有着private的访问权限和方法就不能被访问。 默认规则: 一个类的访问级别是fileprivate 或 private 那么该类的所有成员都是fileprivate 或 private(此时成员无法访问修改访问级别),如果一个类的访问级别是open、internal或者public那么它的所有成员都是internal,类成员的访问级别不能高于类的访问级别。常量、变量、属性、下标脚本访问级别低于其声明的类型级别,并且如果不是默认访问级别(internal)要明确访问级别。在不违反前两条的规则的情况下,setter的访问级别可以低于getter的访问级别。必要构造方法(required修饰)的访问级别必须和类访问级别相同,结构体本身的默认逐一构造函数的访问级别不高于其成员的访问级别的访问级别遵循规则1。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/997009.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存