2.swift中open,public,fileprivate,private,internal

2.swift 中关于open ,public ,fileprivate,private ,internal,修饰的说明

http://www.hangge.com/blog/cache/detail_524.html

open,public 对应的级别是该模块或者是引用了该模块的模块可以访问 即 a belong to A , B import A 这两种情况都可以对 a进行访问

1.public: 类用public(或级别更加等级更低的约束(如private等))修饰后只能在本模块(sdk)中被继承,如果public是修饰属性的话也是只能够被这个module(sdk)中的子类重写-可以被任何人访问。但其他module中不可以被override和继承,而在module内可以被override和继承。

Public:可以访问自己模块或应用中源文件里的任何实体,别人也可以访问引入该模块中源文件里的所有实体。通常情况下,某个接口或Framework是可以被任何人使用时,你可以将其设置为public级别。

2.open:用open修饰的类可以在本某块(sdk),或者其他引入本模块的(sdk,module)继承,如果是修饰属性的话可以被此模块或引入了此某块(sdk)的模块(sdk)所重写-可以被任何人使用,包括override和继承。

PUBLICopen 最大的不同是只能在。open在任何模块都能被继承,而public 只有在本模块中。

3.fileprivate 这个修饰跟名字的含义很像,file private 就是文件之间是private的关系,也就是在同一个source文件中还是可以访问的,但是在其他文件中就不可以访问了 a belong to file A, a not belong to file B , 在 file A 中 可以访问 a,在 file B不可以访问a

4.private 这个修饰约束性比fileprivate的约束性更大,private 作用于某个类,也就是说,对于 class A ,如果属性a是private的,那么除了A外其他地方都不能访问了(fileprivate 和private都是一种对某个类的限制性约束。fileprivate的适用场景可以是某个文件下的extension,如果你的类中的变量定义成了private那么这个变量在你这个类在这个类的文件的拓展中就无法访问了,这时就需要定义为fileprivate)

5.Internal:可以访问自己模块或应用中源文件里的任何实体,但是别人不能访问该模块中源文件里的实体。通常情况下,某个接口或Framework作为内部结构使用时,你可以将其设置为internal级别。

0DB1CAD2-8AC5-4D63-9C90-FC5A2C877097.png
E946DA07-C5A9-4E88-94D2-1418DABA7A50.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,099评论 19 139
  • 《官场笔记》是描述主人公侯卫东一个基层公务员的升迁发展轨迹 得出的几个感悟: 1、目标:做人做事要明确目标,然后来...
    小彩shirley阅读 849评论 0 0
  • 人,相互搀扶才淡定从容;路,相伴而行才是迷人的风景;情,相互惦记才感分外温馨。 天涯不过咫尺,幸福不过此时。人,最...
    老马识新途阅读 583评论 0 1
  • 元组作为返回值示例 元组返回值的访问 元组已经在函数返回值中命名,不需要在函数返回时再次命名 空数组作为函数参数传...
    海子简书阅读 966评论 0 0
  • 房屋装修流程的第一步:拿新房钥匙 房屋装修步骤的第一步当然是要有一个房子了,所以要先把新房的钥匙拿到手。尽可能的利...
    从简心阅读 379评论 0 0