咀嚼和吐火的食人鱼植物是基本食人鱼植物的特化或改进;它们很可能是子类。子类可以做超类可以做的所有事情,但有一些自己的特殊技巧。
由于这两种类型都在管道中上下移动,这将是基本食人鱼植物类的一种方法;这是所有食人鱼植物共有的行为。无论他们在弹出后做什么奇怪的事情,也可能是父类上的一个方法,它会被每个子类覆盖,如下所示:
@interface PiranhaPlant : NSObject
// Declare properties, other methods...
- (void) ascendFromPipe: (NSRect)pipeFrame;
- (void) doThingThatIDoOnceFullyExtended;
@end
@implementation
//...
- (void) ascendFromPipe: (NSRect)pipeFrame
{
// ...drawing/animation stuff
[self doThingThatIDoOnceFullyExtended];
[self descendIntoPipe];
}
- (void) doThingThatIDoOnceFullyExtended
{
return;
}
//...
@end
@interface FireSpittingPiranhaPlant : PiranhaPlant
@end
@implementation FireSpittingPiranhaPlant
- (void) doThingThatIDoOnceFullyExtended
{
[self spitFireball];
}
@end
对于其他子类也是如此。
然后,您将实例化任何类别的单个食人鱼植物,以填充单个管道。他们每个人都会按照班级的定义行事——一个大嚼,一个吐火,一个完全跳出管道,四处追赶马里奥。