Swift--------private 和 public

参考:http://www.jianshu.com/p/604305a61e57
fileprivate
在原有的swift中的 private其实并不是真正的私有,如果一个变量定义为private,在同一个文件中的其他类依然是可以访问到的。

新增加了一个 fileprivate来显式的表明,这个元素的访问权限为文件内私有。过去的private对应现在的fileprivate。现在的private则是真正的私有,离开了这个类或者结构体的作用域外面就无法访问。

open
open则是弥补public语义上的不足。
现在的pubic有两层含义:

这个元素可以在其他作用域被访问
这个元素可以在其他作用域被继承或者override
继承是一件危险的事情。尤其对于一个framework或者module的设计者而言。在自身的module内,类或者属性对于作者而言是清晰的,能否被继承或者override都是可控的。但是对于使用它的人,作者有时会希望传达出这个类或者属性不应该被继承或者修改。这个对应的就是 final。

final的问题在于在标记之后,在任何地方都不能override。而对于lib的设计者而言,希望得到的是在module内可以被override,在被import到其他地方后其他用户使用的时候不能被override。

这就是 open产生的初衷。通过open和public标记区别一个元素在其他module中是只能被访问还是可以被override。

现在的访问权限则依次为:open,public,internal,fileprivate,private。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,828评论 19 139
  • 写在前面 首先和大家分享一下学习新语法的技巧:用Xcode8打开自己的Swift2.3的项目,选择Edit->Co...
    光无影阅读 21,630评论 24 111
  • 下雨了,都说扬州的烟雨最迷人,我决定沿着古运河走一走,路过一只鸟,以为是雕塑,走进了才知是真的
    天心一炁阅读 1,279评论 0 0
  • NLP思维逻辑层次也称理解层次。 目录 1 前言 2 “理解层次”是什么 3 理解层次的现实举例 前言编辑 每一件...
    青苗妈2016阅读 4,997评论 0 5
  • 《春天里的小姑娘》 春天里的小姑娘,带着春天的气息,走路像一阵风,飘然而至,不发出一点声响。胸前带一小肚兜,说话总...
    心若安一切安好阅读 1,630评论 0 0

友情链接更多精彩内容