A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1、成员访问类型
@private:私有成员,不能被外部函数访问(使用),也不能被子类继承;
@protected:保护成员,不能被外部函数访问,可以被子类继承;
@public:公有成员,可以被外部函数访问,也可以被子类继承。
@package(框架级别的):    作用于框架级别的

成员访问类型总结:

  • 继承关系:@private不能被子类继承;@protected可以被子类继承;@public可以被子类继承
  • 访问关系:a,不论成员变量是什么访问类型,成员方法内部都可以直接访问
  
//不论成员变量是什么访问类型,成员方法内部都可以直接访问
  
-(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属性

4 个回复

倒序浏览
嗯嗯  太好了!不错!顶!顶!顶!
回复 使用道具 举报
嗯嗯  太好了!不错!顶!顶!顶!
回复 使用道具 举报
恩恩,太好了!不错,顶!顶!顶!
回复 使用道具 举报
嗯  不错不错 顶顶顶
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马