黑马程序员技术交流社区

标题: 在OC的继承视频中,代码报错了,希望大家能够解答,谢谢! [打印本页]

作者: 唐肖虎    时间: 2015-8-28 20:54
标题: 在OC的继承视频中,代码报错了,希望大家能够解答,谢谢!
本帖最后由 唐肖虎 于 2015-8-30 20:03 编辑

楼主只把父类和出错的子类的代码贴出来,希望大家帮我看看问题呀。这是父类

  1. #import <Foundation/Foundation.h>
  2. #pragma mark Animal的声明
  3. @interface Animal : NSObject
  4. {
  5.     int _age;
  6. }
  7. -(void)eat:(NSString *)foodName;
  8. -(void)run;
  9. @end
复制代码
这是子类
  1. #import <Foundation/Foundation.h>
  2. #import "Animal.h"
  3. //狗这个类要继承动物这个类
  4. /*
  5. 1、导入要继承的那个类的头文件
  6. 2、@interface Dog:父类名 (这里写Animal,不是NSObject)
  7. */
  8. @interface Dog : Animal
  9. -(void)lookHome;
  10. @end
复制代码
这是main里面的
  1. #import <Foundation/Foundation.h>
  2. #import "Animal.h"
  3. #import "Dog.h"
  4. int main(int argc, const char * argv[]) {
  5.     @autoreleasepool {
  6.         Animal *ani=[Animal new];
  7.         ani->_age=1;
  8.         [ani eat:@"玉米"];
  9.         [ani run];
  10.         
  11.         Dog *di=[Dog new];
  12.         [di eat:@"一坨新鲜的530"];
  13.         [di run];
  14.         [di lookHome];
  15.         di->_age=3;     
  16.     }
  17.     return 0;
  18. }
复制代码
楼主出错的地方在于两个di和ani—>age时发生错误,报错是因为protect。我想请问继承不是@public的吗?希望大家能详细的说一下啊,谢谢!





作者: 范文鹏    时间: 2015-8-28 21:10
不懂 帮顶!
作者: alanwangke213    时间: 2015-8-29 17:51
本帖最后由 alanwangke213 于 2015-8-29 17:54 编辑

默认的成员变量是受保护了protected类型的,你要这样用可以加一个@public或者写setter和getter
作者: 张中付    时间: 2015-8-29 17:57
请问你的代码怎么搞成那样的?
作者: 唐肖虎    时间: 2015-8-29 19:49
alanwangke213 发表于 2015-8-29 17:51
默认的成员变量是受保护了protected类型的,你要这样用可以加一个@public或者写setter和getter ...

恩恩,知道了啊,谢谢啊。
作者: 唐肖虎    时间: 2015-8-29 19:53
张中付 发表于 2015-8-29 17:57
请问你的代码怎么搞成那样的?

参与/回复主题里面有个<>就可以写代码了啊。
作者: 庞佳星    时间: 2015-8-29 19:55
#import <Foundation/Foundation.h>
#pragma mark Animal的声明
@interface Animal : NSObject
{
    @public
    int _age;
}
-(void)eat:(NSString *)foodName;
-(void)run;
@end
以上是改过的代码看看
解释:在属性的前面加上@public就ok了,因为现在的属性是@protect类型的私有变量,所以只能在父类和子类中访问,不能在主函数里访问。
作者: 张中付    时间: 2015-8-29 22:44
楼上说的对,实例变量默认保护的,你的那个实现代码只是没有贴出来吗
作者: Tangjw    时间: 2015-8-30 22:08
学ios好呢还是学android好呢?




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