經過一番研究,我找不到超類,所以我決定在這裏問。CCSprite的超類
例
@interface superClass : CCSprite
@end
@interface subClass : superClass
@end
如何上面的兩個例子之間的相互關係?另外,我被證明可以在superClass中添加一個方法,然後在子類中使用它(如何?)?
經過一番研究,我找不到超類,所以我決定在這裏問。CCSprite的超類
例
@interface superClass : CCSprite
@end
@interface subClass : superClass
@end
如何上面的兩個例子之間的相互關係?另外,我被證明可以在superClass中添加一個方法,然後在子類中使用它(如何?)?
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]
來調用父類的方法實現
我猜,subClass和superClass將是兩個單獨的文件,如:subClass.h,superClass.h,他們的.m文件呢? – akuritsu
是的。通常每個類都有一個.h和.m文件 –
你」會發現這有幫助:https://developer.apple.com/library/mac/#documentation/cocoa/Conceptual/ObjectiveC/Chapters/ocDefiningClasses.html – LearnCocos2D