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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

Person.h
  1. #import <Foundation/Foundation.h>

  2. @interface Person : NSObject
  3. {
  4.     //@protected //成员变量默认的作用域为protected
  5.     int _age;
  6. }
  7. - (void)setAge:(int)age;
  8. - (int)age;

  9. @end
复制代码

Person.m
  1. #import "Person.h"

  2. @implementation Person

  3. - (void)setAge:(int)age
  4. {
  5.     if(age > 0) //封装的set方法可以过滤一些不合理的值
  6.     {
  7.         _age = age;
  8.     }
  9. }

  10. - (int)age
  11. {
  12.     return _age;
  13. }

  14. @end
复制代码

main.m
  1. /*
  2. 封装:将成员变量的访问封装成set方法和get方法
  3. 好处:
  4. * 将类的数据与实现分离,隐藏实现细节
  5. * 能在封装的代码中过滤一些不合理的值
  6. */

  7. #import <Foundation/Foundation.h>
  8. #import "Person.h"

  9. int main(int argc, const char * argv[])
  10. {
  11.     Person *p = [Person new];
  12.    
  13.     [p setAge:10]; //要通过封装的set方法来访问成员变量
  14.     //NSLog(@"_age = %d" , p->_age); //类的成员变量默认作用域为protected,只能在类或子类中直接访问,不能在类外直接访问
  15.     NSLog(@"_age = %d" , [p age]);
  16.    
  17.     [p setAge:-1]; //不合理的年龄值-1将被过滤掉
  18.    
  19.     NSLog(@"_age = %d" , [p age]);
  20.    
  21.     return 0;
  22. }
复制代码



0 个回复

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