Суперклассы для CCSprite

После некоторых исследований я не могу найти ничего о суперклассах, поэтому я решил спросить здесь.

Пример

@interface superClass : CCSprite
@end

@interface subClass : superClass
@end

Как два приведенных выше примера связаны друг с другом? Кроме того, мне показали, что вы можете добавить метод в суперкласс, а затем использовать его в подклассе (как?)?


person akuritsu    schedule 21.05.2012    source источник
comment
Вы найдете это полезным: разработчик. apple.com/library/mac/#documentation/cocoa/Conceptual/   -  person LearnCocos2D    schedule 22.05.2012


Ответы (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] для вызова реализации метода в суперклассе

person Bryan Chen    schedule 21.05.2012
comment
Я предполагаю, что подкласс и суперкласс будут двумя отдельными файлами, например: subClass.h, superClass.h, а также их файлы .m? - person akuritsu; 23.05.2012