封装权限(访问控制)

1.open 这是权限最大的,只要用它来修饰的变量(类),整个项目都能访问,并且支持所有编译器允许的操作,不过只有类可以用这个来修饰变量,结构体会报下图的错误,拿第三方库比喻的话,就是封装在最外层的类

2.public 允许本模块的所有操作,不允许被其它模块继承和重写,基本是最常用的权限

3.internal 在public的基础上,只允许本模块访问

4.fileprivate 只允许在当前的文件内访问比如main.m里面用fileprivate定义了一个类,那就只能main.m文件的其它类或者什么能访问

5.private 只允许封闭的实体里面访问,比如这图,在外面访问就直接报错了

访问规则

1.变量的访问类型的权限要大于变量的权限

比如这代码没啥问题,原因就是var的权限Public要大于internal,原因很简单,如果允许这样访问,我创建一个private的意义就没有了,用open修饰一个Person实例,所有地方都能访问这个Person了

图上左边的类型访问权限是大于等于右边,比如

父类指针可以指向子类对象,而子类对象无法指向父类对象,就不一一验证了

如果在元组这类多个对象,多个访问权限的时候,必须小于最小的

总结:左边的权限必须小于等于右边,多个的情况下,必须小于等于右边权限最小的

嵌套的权限问题

这段代码来说,报错很正常,父类的权限要比子类小,就是所谓的,左边权限大于右边所以不可以

private class Person {}
fileprivate class Stu:Person {}

但单独拿出来放在main.m则可以了,原因是嵌套的问题,当有了嵌套之后private的权限就只限于这个嵌套范围了,所以Person的权限只能在test里面访问,但拿出来之后Person和Stu的访问权限都是main.m可用,所以是同等权限

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值