0

经过一番研究,我在超级类上找不到任何东西,所以我决定在这里问。

例子

@interface superClass : CCSprite
@end

@interface subClass : superClass
@end

上述两个示例如何相互关联?另外,我被告知您可以在超类中添加一个方法,然后在子类中使用它(如何?)?

4

1 回答 1

1

CCSprite是的超类superClass superClass是的超类subClass

在超类中有两种使用方法的方法,例如

@interface superClass : CCSprite
- (void)doSomething;
- (id)somethingElse;
@end

@implement superClass
- (void)doSomething {
    NSLog( @"do something in super class" );
}
- (id)somethingElse {
    return @"something else in super class";
}
@end

@interface subClass : superClass
- (void)doSomethingTwice;
@end
@implement subClass
- (void)doSomethingTwice {
    [self doSomething];
    [self doSomething];
}
- (id)somethingElse {
    id fromSuper = [super somethingElse];
    return @"something else in sub class";
}
@end

subClass sub = [[subClass alloc] init];
[sub doSomethingTwice];   // this will call `doSomething` implemented is superClass twice
NSLog([sub somethingElse]); // this will call `somethingElse` in super class but return "something else in sub class" because it override it

基本上你可以在子类的实例上调用超类中实现的方法

并且您可以覆盖子类中的方法以执行不同的操作和/或使用[super methodName]调用超类中的方法实现

于 2012-05-21T12:21:15.383 回答