-2

关于继承,我这里有两个类:女性,人类的子类和人类,它可以运行但显示问题。

这里有两个问题:

main.m:29:10:“人类”可能不会响应“setSexy:”

main.m:30:10:“人类”可能不会响应“isSexy”

主文件

#import <Foundation/Foundation.h>
#import "female.h"

int main(int argc, const char * argv[])
{

    @autoreleasepool {

        human *sexyGirl = [[female alloc] init];

        [sexyGirl setName:@"SexyGirl"];
        [sexyGirl setGender:0];
        [sexyGirl setSexy:1];
        [sexyGirl isSexy];

    }
    return 0;
}

女性.h

#import "human.h"

@interface female : human {
    BOOL sexy;
}

@property BOOL sexy;

-(void)isSexy;

@end

人类.h

#import <Foundation/Foundation.h>

@interface human : NSObject {
    NSInteger *hp;
    NSString *name;
    BOOL gender;
}

@property (assign, nonatomic) NSInteger *hp;
@property (assign, nonatomic) NSString *name;
@property (assign, nonatomic) BOOL gender;

-(void) walk;

@end
4

2 回答 2

1

当你这样做时:human *sexyGirl = [[female alloc] init];女性推向人类。女性拥有的所有额外信息(额外方法)仍然存在但不再可见

从那时起,您只能使用人类所拥有的东西,或者您再次降低变量。 [(female*)sexyGirl setSexy:1]; [(female*)sexyGirl isSexy]

或者永远不要贬低它并一直将其声明为女性*

于 2012-12-08T17:40:44.593 回答
1

没有方法名isSexy并且setSexyhuman类中

你应该改变这个 human *sexyGirl = [[female alloc] init];

对此 female *sexyGirl = [[female alloc] init];

于 2012-12-08T17:29:54.010 回答