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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 安若曦 于 2015-9-11 14:51 编辑

1、实例变量修饰符的介绍
  1. #import <Foundation/Foundation.h>
  2. @interface Person : NSObject
  3. {
  4.     @public   //公开的,在任何地方 通过实例对象都能访问
  5.     int _age;
  6.    
  7.     @private  //私有的  只能在当前类中使用
  8.     NSString *_name;
  9.    
  10.     @protected //受保护类型  只能在当前类和子类中访问
  11.     float _weight;
  12. }
  13. -(void)run;
  14. @end

  15. #import "Person.h"
  16. @implementation Person
  17. -(void)run{
  18.     NSLog(@"_weight = %.2f",_weight);
  19. }
  20. @end
复制代码
  1. #import <Foundation/Foundation.h>
  2. #import "Person.h"
  3. int main(int argc, const char * argv[]) {
  4.     @autoreleasepool {
  5.         
  6.         Person *p = [Person new];
  7.         p->_age = 12;
  8.         //p->_weight = 2.3f;
  9.    
  10.     }
  11.     return 0;
  12. }
复制代码

2、实例变量修饰符对于子类的影响
  1. #import "Animal.h"
  2. @interface Dog : Animal
  3. -(void)run;
  4. @end

  5. #import "Dog.h"
  6. @implementation Dog
  7. -(void)run{

  8.     //@public 类型的变量,在子类中可以正常的访问和使用
  9.     NSLog(@"public _age = %d",_age);
  10.    
  11.     //@protected 类型的变量,在子类中使用,不能在其他类中使用
  12.     _weight += 10;
  13.     NSLog(@"@protected _weight = %.2f",_weight);
  14.    
  15.     //@private 类型的变量
  16.     //面试题:
  17.     //@private 类型的变量  能否被子类继承?
  18.     //子类可以继承父类的实例变量和方法
  19.     //但是不是所有的都可以访问
  20.    
  21.     //@private 类型的变量  能否被子类访问?
  22.     //不能访问
  23.     //NSLog(@"@private _tuiNum = %d",_tuiNum);  //此处是能继承过来,但是不能访问
  24. }
  25. @end

  26. #import <Foundation/Foundation.h>
  27. #import "Dog.h"
  28. int main(int argc, const char * argv[]) {
  29.     @autoreleasepool {
  30.         Dog *d = [Dog new];
  31.         d->_age = 12;
  32.         [d run];
  33.         
  34.     }
  35.     return 0;
  36. }
复制代码




0 个回复

您需要登录后才可以回帖 登录 | 加入黑马