Swift3 访问控制权限关键字变化

swift3中新增了两种访问控制权限关键字 fileprivate、open。

先介绍一下swift3之前的一些访问控制权限关键字 private、public、internal(默认)

private

在 swift3 之前,private修饰的属性、方法能在当前文件中访问,包括这个文件的其它类中也可以访问到;
在 swift3 之后,private修饰的属性、方法只能在当前类中访问,及时分类中也无法访问;

public

在 swift3 之前,public修饰的属性、方法能在其他任何地方被访问以及被override;
在 swift3 之后,public修饰的属性、方法能在其他任何地方被访问,但是只有在当前module中能被继承,其他module只能访问无法 override;

新增的两个关键字能解决什么问题

fileprivate

增加的 fileprivate 无疑更加细化了 我们对私有变量及方法的定义,fileprivate 字面上意思是文件类可以被访问,可以说是代替了原来的 private; 而 private 也就回归了真正意义上的私有,只有在当前类中能被访问

open

在不清楚父类中做了什么操作的情况下继承无疑是一件很危险的事情。对于一个framework或者module的设计者而言,在自身的module内,类或者属性对于作者而言是清晰的,能否被继承或者override都是可控的。但是对于使用它的人,作者有时会希望传达出这个类或者属性不应该被继承或者修改。

使用 final 的问题在于,用 final 标记后,在任何地方都不能被override,这肯定无法满足 开发者对于 在自身的module内可以被override,对于使用者无法override的需求。

open的出现弥补了public与final的不足;open代替了原有的 public 的功能;通过open和public就能标记区别一个元素在其他module中是只能被访问还是可以被override。

总结:

swift3中访问权限由高到低依次为:open、public、internal(默认)、fileprivate、private。
无疑,swift3增大了语言的复杂度,但是也无疑增大了我们使用的灵活度,这些都需要我们在编程的同时更深入的思考

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值