黑马程序员技术交流社区

标题: 实例变量修饰符介绍,以及实例变量修饰符对子类的影响 [打印本页]

作者: 安若曦    时间: 2015-9-11 14:42
标题: 实例变量修饰符介绍,以及实例变量修饰符对子类的影响
本帖最后由 安若曦 于 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. }
复制代码









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