0

調べてみたところ、スーパークラスで何も見つからなかったので、ここで聞いてみることにしました。

@interface superClass : CCSprite
@end

@interface subClass : superClass
@end

上記の2つの例は互いにどのように関連していますか?また、スーパークラスのメソッドを追加して、それをサブクラスで使用できることも示されました(どのように?)?

4

1 に答える 1

1

CCSpriteのスーパークラスsuperClass superClassです のスーパークラスですsubClass

スーパークラスでメソッドを使用する方法は 2 つあります。たとえば、

@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 に答える