黑马程序员技术交流社区

标题: 对封装的一点理解,分享给大家 [打印本页]

作者: 白月光    时间: 2014-6-11 17:37
标题: 对封装的一点理解,分享给大家
  1. #import <Foundation/Foundation.h>

  2. //定义类:人
  3. @interface Person : NSObject
  4. {
  5.     NSString *_name;  //姓名
  6.     int _age; //年龄
  7. }
  8. //姓名的set和get方法声明
  9. - (void)setName:(NSString *)newname;
  10. - (NSString *)name;

  11. //年龄set和get方法声明
  12. - (void)setAge:(int)newage;
  13. - (int)age;

  14. //同时录入姓名和年龄方法声明
  15. - (void)setName:(NSString *)name2 andAge:(int)age2;

  16. @end


  17. @implementation Person
  18. //姓名set方法实现
  19. - (void)setName:(NSString *)newname
  20. {
  21.     _name = newname;

  22. }
  23. //姓名get方法实现
  24. - (NSString *)name
  25. {
  26.     return _name;
  27. }
  28. //年龄set方法实现
  29. - (void)setAge:(int)newage
  30. {
  31.     _age = newage;
  32. }
  33. //年龄get方法实现
  34. - (int)age
  35. {
  36.     return _age;
  37. }

  38. - (void)setName:(NSString *)name2 andAge: (int)age2
  39. {
  40.    
  41.     [self setName : name2];
  42.     [self setAge : age2];
  43. }

  44. @end


  45. int main()
  46. {
  47.     Person *p = [Person new];
  48.     [p setName:@"jack" andAge:22];
  49.     //[p setName : @"jack"];
  50.     //[p setAge : 22];
  51.    
  52.    
  53.     NSLog(@"%@  %d",[p name],[p age]);

  54.     return 0;

  55. }
复制代码
一开始我就错误的将NSLog(@"%@ %d",[p name],[p age])写成了NSLog(@"%@ %d",[p  _name],[p _age]),想当然的认为要输出变量的值只要把变量拿过来就可以了,此代码中有封装set和get方法,所以输出要通过get方法的来输出



QQ截图20140611172053.jpg (148.62 KB, 下载次数: 9)

运行

运行

作者: 徐开伟    时间: 2014-6-11 21:02
顶一个。
作者: 武星    时间: 2014-6-11 22:10
学习学习
作者: 世俗孤岛    时间: 2015-3-14 11:40
顶一个!
作者: xiaoxiong    时间: 2015-3-14 11:42
看不懂啊!!:Q:Q
作者: 小白一号    时间: 2015-3-14 15:19
不错,解释的很细致,步骤也很清晰,顶起。
作者: baby14    时间: 2018-8-13 09:14
多谢分享




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