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。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 124,774评论 18 136
  • 写在前面 首先和大家分享一下学习新语法的技巧:用Xcode8打开自己的Swift2.3的项目,选择Edit->Co...
    光无影阅读 21,230评论 24 111
  • 下雨了,都说扬州的烟雨最迷人,我决定沿着古运河走一走,路过一只鸟,以为是雕塑,走进了才知是真的
    天心一炁阅读 63评论 0 0
  • NLP思维逻辑层次也称理解层次。 目录 1 前言 2 “理解层次”是什么 3 理解层次的现实举例 前言编辑 每一件...
    青苗妈2016阅读 1,003评论 0 5
  • 《春天里的小姑娘》 春天里的小姑娘,带着春天的气息,走路像一阵风,飘然而至,不发出一点声响。胸前带一小肚兜,说话总...
    月下虫半阅读 90评论 0 0
  • / 01 / 公元1129年,农历8月18日,李清照被命运残酷的贴上了一个新标签:寡妇。 就在这一天,她的丈夫赵明...
    在下王焱阅读 929评论 4 43
  • “可怜之人,必有可恨之处”。故事的猪脚是L小姐,一个矛盾却又害怕改变的人。 2006年9月到现在,L小姐到北京已经...
    斯然Li阅读 128评论 0 1