調べてみたところ、スーパークラスで何も見つからなかったので、ここで聞いてみることにしました。
例
@interface superClass : CCSprite
@end
@interface subClass : superClass
@end
上記の2つの例は互いにどのように関連していますか?また、スーパークラスのメソッドを追加して、それをサブクラスで使用できることも示されました(どのように?)?
調べてみたところ、スーパークラスで何も見つからなかったので、ここで聞いてみることにしました。
例
@interface superClass : CCSprite
@end
@interface subClass : superClass
@end
上記の2つの例は互いにどのように関連していますか?また、スーパークラスのメソッドを追加して、それをサブクラスで使用できることも示されました(どのように?)?
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]
、スーパークラスのメソッド実装を呼び出すために使用したりできます