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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 眼瞳╄渲染繁华 中级黑马   /  2014-8-31 11:13  /  1341 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这道题哪里有错?没有main函数
#import <Foundation/Foundation.h>
@interface Dog : Animal
{
    int _age;
    double _height;
}
@end
@implementation Dog
- (void)test1//这里可以有与父类同名的实现方法并不声明吗?
{
    NSLog(@"test1----");
    [super test2];
}
@end
@interface Animal : NSObject
{
    int _age;
    double _weight;
}
- (void)test1;
+ (void)test2;
@end
@implementation Animal
- (void)test1
{
    NSLog(@"test1----");
}
+ (void)test2
{
    NSLog(@"test2----");
}
@end

4 个回复

正序浏览
父类和子类有前后
回复 使用道具 举报
父类提前面前
回复 使用道具 举报
你的错误是,子类拥有和父类完全一样的成员变量..

因为子类已经继承了父类,所以子类已经拥有了父类的成员变量.
当再写成员变量的话,就等于有了两份一样的成员变量.
所以,这是重复定义错误.

修改方法,就是将子类的两个成员变量去掉.
回复 使用道具 举报
应该先声明父类,再声明子类,编译器是顺序执行的,要不找不到父类会报错。
#import <Foundation/Foundation.h>

@interface Animal : NSObject
{
    int _age;
    double _weight;
}
- (void)test1;
+ (void)test2;
@end
@implementation Animal
- (void)test1
{
    NSLog(@"test1----");
}
+ (void)test2
{
    NSLog(@"test2----");
}
@end
@interface Dog : Animal
{
    int _age;
    double _height;
}
@end
@implementation Dog
- (void)test1//这里可以有与父类同名的实现方法并不声明吗?
{
    NSLog(@"test1----");
    [super test2];
}
@end

另外之类的对象方法和类方法重写的时候不用声明,因为集成了父类,父类中有声明

评分

参与人数 1技术分 +1 收起 理由
★彬★卍囧神 + 1 很给力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马