黑马程序员技术交流社区

标题: 面向对象继承 [打印本页]

作者: haohaoxuexi    时间: 2014-4-5 23:15
标题: 面向对象继承
本帖最后由 haohaoxuexi 于 2014-4-6 23:21 编辑
  1. //在继承中使用构造方法
  2. #import <stdio.h>
  3. #import <Foundation/NSObject.h>

  4. @interface TheClass : NSObject

  5. static int count;//此处报错

  6. + (int) getCount;
  7. @end
  8. @implementation TheClass

  9. - (TheClass*) init
  10. {
  11.     self = [super init];
  12.     count++;
  13.     return self;
  14. }
  15. + (int)getCount
  16. {
  17.     return count;
  18. }

  19. @end
  20. int main()
  21. {
  22.     TheClass *tc1 =[TheClass new];
  23.     printf("TheClass count is %i\n",[TheClass getCount]);
  24.     TheClass *tc2 = [TheClass new];
  25.     printf("TheClass count is %i\n",[TheClass getCount]);
  26.     return 0;
  27. }
复制代码
请大神门帮修改修改,老是报错它

作者: 程浩    时间: 2014-4-6 09:21
本帖最后由 程浩 于 2014-4-6 09:22 编辑
  1. //在继承中使用构造方法
  2. #import <stdio.h>
  3. #import <Foundation/NSObject.h>

  4. @interface TheClass : NSObject

  5. static int count;//此处报错     //因为你这可是成员变量,不是方法,你应该写在大括号中啊{}

  6. + (int) getCount;
  7. @end
  8. @implementation TheClass

  9. - (TheClass*) init
  10. {
  11.     self = [super init];
  12.     count++;    //此处你根本没有改变count的指,因为count是静态的变量,你没法改变,而且你应该弄一个对应的指针指向count,通过指针来改变值
  13.     return self;
  14. }
  15. + (int)getCount
  16. {
  17.     return count;  //count会一直是0
  18. }

  19. @end
  20. int main()
  21. {
  22.     TheClass *tc1 =[TheClass new];    //new的这句话可以写成:[[TheClass alloc] init] ,初始化的时候并不会调用你的init,因为你写的不是类方法,是对象方法啊
  23.     printf("TheClass count is %i\n",[TheClass getCount]);   //这里又弄反了,getCount应该写成对象方法,因为是TheClass这个对象去调用嘛
  24.     TheClass *tc2 = [TheClass new];
  25.     printf("TheClass count is %i\n",[TheClass getCount]);
  26.     return 0;
  27. }
复制代码



作者: haohaoxuexi    时间: 2014-4-6 19:47
程浩 发表于 2014-4-6 09:21

这是从书上,原封不动得敲下来的代码,谁知道,好多错的,尽信书不如无书




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