黑马程序员技术交流社区
标题:
实例变量修饰符介绍,以及实例变量修饰符对子类的影响
[打印本页]
作者:
安若曦
时间:
2015-9-11 14:42
标题:
实例变量修饰符介绍,以及实例变量修饰符对子类的影响
本帖最后由 安若曦 于 2015-9-11 14:51 编辑
1、实例变量修饰符的介绍
#import <Foundation/Foundation.h>
@interface Person : NSObject
{
@public //公开的,在任何地方 通过实例对象都能访问
int _age;
@private //私有的 只能在当前类中使用
NSString *_name;
@protected //受保护类型 只能在当前类和子类中访问
float _weight;
}
-(void)run;
@end
#import "Person.h"
@implementation Person
-(void)run{
NSLog(@"_weight = %.2f",_weight);
}
@end
复制代码
#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Person *p = [Person new];
p->_age = 12;
//p->_weight = 2.3f;
}
return 0;
}
复制代码
2、实例变量修饰符对于子类的影响
#import "Animal.h"
@interface Dog : Animal
-(void)run;
@end
#import "Dog.h"
@implementation Dog
-(void)run{
//@public 类型的变量,在子类中可以正常的访问和使用
NSLog(@"public _age = %d",_age);
//@protected 类型的变量,在子类中使用,不能在其他类中使用
_weight += 10;
NSLog(@"@protected _weight = %.2f",_weight);
//@private 类型的变量
//面试题:
//@private 类型的变量 能否被子类继承?
//子类可以继承父类的实例变量和方法
//但是不是所有的都可以访问
//@private 类型的变量 能否被子类访问?
//不能访问
//NSLog(@"@private _tuiNum = %d",_tuiNum); //此处是能继承过来,但是不能访问
}
@end
#import <Foundation/Foundation.h>
#import "Dog.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Dog *d = [Dog new];
d->_age = 12;
[d run];
}
return 0;
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2