访问修饰符, public,protected,private
1.@private修饰的属性只能在本类的内部访问
即只能在本类的方法实现(@implementation中)中访问
如上图,自己创建的对象不能访问
在Person的实现中,可以使用
2.protected修饰
创建的对象中依然不可以访问,只能在本类和本类的子类中访问。即只能在本类和子类的方法实现中实现
student是person的子类,可以在实现(implementation)中访问
如果是private修饰是不能访问的
- @package修饰的
可以在当前框架中使用
4.@public修饰的属性,可以在任意地方访问
可以在外部访问,可以在子类和本类的实现中访问
注意:如果不为属性指定访问修饰符的,默认为protected
如果父类的属性都是被private修饰的,那么,这些属性还可以被属性继承吗?
我们可以证实一下。
由于用private修饰的只有在本类的实现中才可以被访问,所以,我们在想在子类中确认私有属性是否被继承时,要在父类实现中,改变属性值,由于方法是继承自父类的,只要打印属性值,看看和之前设置的一不一样就可以了。
我在父类实现中改变属性的值
创建一个子类对象并调用父类的方法,如果不报错即继承属性
子类仍然可以继承父类继承来的私有属性,但是不能在子类直接访问父类继承过来的属性,但是可以通过父类的方法去访问,为属性赋值。取值。用super间接调用
使用建议:
无论什么情况下都不要用@public,属性不能直接暴露给外界
@private,使用于只想在本类当中使用的情况
推荐使用protected