OC学习中关于@private@protected@pakege@public的访问权限和继承问题

我遇到的问题是为什么父类的实例变量name是用@protected修饰的,但子类就是访问不了。后来发现@protected修饰的成员变量(注意区别于全局都能访问的@public)只能在子类中(注意是子类的定义中即@interface@end@implementation@end中才能访问,直接(用->)间接(用函数)都可以访问),但在外部就不行了,比如我犯的错就是在外部main函数中son1->name,编译提示name变量被protected,无法访问。具体看学习时测试的代码回忆,转换测试一下就知道。

#import<Foundation/Foundation.h>

@interface Father : NSObject
{	//@private 
	@protected
	int name;

}
//@property int name;
//-(int)getyourfathername;
-(void) info;
@end

@implementation Father
//{int name;}
-(void)info{
	NSLog(@"i am you father");
}
//-(int)getyourfathername{
//	name=6;
//	return name;
//}

@end



@interface Son :Father
-(void)visit:(int)a;
@end

@implementation Son
-(void)visit:(int)a{
	self->name=a+100;
	NSLog(@"visit display:%d",name);
}
@end


int main(int argc,char *argv[]){
	@autoreleasepool{
		Son* son1=[[Son alloc]init];
		[son1 visit:888];
		//NSLog(@"output:%d",[son1 getyourfathername]);

		//son1->name=3;
		//NSLog(@"the name of son is:%d",son1->name);
		[son1 info];



	}

return 0;
}



参考文章:http://www.cnblogs.com/chenyg32/p/4803684.html



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值