黑马程序员技术交流社区

标题: 这道题哪里有错,求解答 [打印本页]

作者: 眼瞳╄渲染繁华    时间: 2014-8-31 11:13
标题: 这道题哪里有错,求解答
这道题哪里有错?没有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


作者: himym2005    时间: 2014-8-31 11:38
应该先声明父类,再声明子类,编译器是顺序执行的,要不找不到父类会报错。
#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

另外之类的对象方法和类方法重写的时候不用声明,因为集成了父类,父类中有声明
作者: 王振宇351x    时间: 2014-8-31 14:09
你的错误是,子类拥有和父类完全一样的成员变量..

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

修改方法,就是将子类的两个成员变量去掉.
作者: ★彬★卍囧神    时间: 2014-8-31 18:38
父类提前面前
作者: 周易    时间: 2014-8-31 19:04
父类和子类有前后




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