黑马程序员技术交流社区

标题: @private@protected@public个人总结 [打印本页]

作者: 0826iOS_sunzhen    时间: 2015-9-15 22:43
标题: @private@protected@public个人总结
1、成员访问类型
@private:私有成员,不能被外部函数访问(使用),也不能被子类继承;
@protected:保护成员,不能被外部函数访问,可以被子类继承;
@public:公有成员,可以被外部函数访问,也可以被子类继承。
@package(框架级别的):    作用于框架级别的

成员访问类型总结:
  
//不论成员变量是什么访问类型,成员方法内部都可以直接访问
  
-(void)run{
  
  
      NSLog(@"%@",self->_name);//public
  
      NSLog(@"%d",self->_age);//protected
  
      NSLog(@"%@",self->_color);//private
  
     NSLog(@"正在狂奔!");
  
}
  

b,其他类:如果其他类想要访问有2种情况,一是作为另一个类的成员变量,另一个是作为另一个类对象方法的形参或者局部变量。但对于这2中情况,都只能访问类型为@public的成员变量
  
#import "Person.h"
  
  
@implementation Person
  
//作为成员变量访问
  
-(void)setProps{
  
    NSLog(@"%@",_animal->_name);//只能访问@public类型的
  
}
  
  
//作为形参(形参也是局部变量)访问
  
-(void)setProps:(Animal*)animal{
  
    NSLog(@"%@",animal->_name);//只能访问@public类型的
  
}
  
@end
  

c,子类:测试了一下子类无法使用super访问父类中的任何成员变量,但是可以使用super访问父类的成员方法。如果在子类中把父类作为局部变量创建,可以访问父类中的@protected和@public属性


作者: 15738320440    时间: 2015-9-15 23:10
嗯嗯  太好了!不错!顶!顶!顶!
作者: TTsu    时间: 2015-9-15 23:13
嗯嗯  太好了!不错!顶!顶!顶!

作者: 同舟ing    时间: 2015-9-16 23:58
恩恩,太好了!不错,顶!顶!顶!
作者: 范文鹏    时间: 2015-9-17 00:11
嗯  不错不错 顶顶顶




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2