访问修饰符的作用,面试

访问修饰符, public,protected,private
1.@private修饰的属性只能在本类的内部访问
即只能在本类的方法实现(@implementation中)中访问
在这里插入图片描述
如上图,自己创建的对象不能访问

在Person的实现中,可以使用

2.protected修饰
创建的对象中依然不可以访问,只能在本类和本类的子类中访问。即只能在本类和子类的方法实现中实现
在这里插入图片描述
在这里插入图片描述
student是person的子类,可以在实现(implementation)中访问
如果是private修饰是不能访问的
在这里插入图片描述

  1. @package修饰的
    可以在当前框架中使用

4.@public修饰的属性,可以在任意地方访问
可以在外部访问,可以在子类和本类的实现中访问

注意:如果不为属性指定访问修饰符的,默认为protected

如果父类的属性都是被private修饰的,那么,这些属性还可以被属性继承吗?

我们可以证实一下。
由于用private修饰的只有在本类的实现中才可以被访问,所以,我们在想在子类中确认私有属性是否被继承时,要在父类实现中,改变属性值,由于方法是继承自父类的,只要打印属性值,看看和之前设置的一不一样就可以了。
在这里插入图片描述
我在父类实现中改变属性的值

在这里插入图片描述
创建一个子类对象并调用父类的方法,如果不报错即继承属性
在这里插入图片描述
子类仍然可以继承父类继承来的私有属性,但是不能在子类直接访问父类继承过来的属性,但是可以通过父类的方法去访问,为属性赋值。取值。用super间接调用
在这里插入图片描述
在这里插入图片描述
使用建议:
无论什么情况下都不要用@public,属性不能直接暴露给外界
@private,使用于只想在本类当中使用的情况
推荐使用protected

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值