1

在编程方面,我是一个完全的新手,我年轻时的大部分时间都集中在设计、CSS/HTML 上,最后决定我应该跳到编程领域。

我一直在阅读 Stephen Kochan 的书“Objective C 编程”,我大约有 4 章,希望对面向对象编程的概念进行一些澄清。以游戏开发为例,或多或少的对象、类和方法的概念。

因此,如果我们以《超级马里奥兄弟》为例,忽略游戏很可能不是使用 Objective C 开发的事实。

据我了解...

因此,如果“食人鱼植物”是该类...是否会咀嚼食人鱼植物和吐火的食人鱼植物都是该类(食人鱼植物)的对象?

然后您会将方法应用于这些对象,例如:

咀嚼食人鱼植物(对象):从管咬中向上/向下

火球食人鱼植物(物体):从管道上升/下降发射火球

...?

我完全误解了这个概念吗?

谢谢您的帮助!

4

1 回答 1

5

咀嚼和吐火的食人鱼植物是基本食人鱼植物的特化或改进;它们很可能是子类。子类可以做超类可以做的所有事情,但有一些自己的特殊技巧。

由于这两种类型都在管道中上下移动,这将是基本食人鱼植物类的一种方法;这是所有食人鱼植物共有的行为。无论他们在弹出后做什么奇怪的事情,也可能是父类上的一个方法,它会被每个子类覆盖,如下所示:

@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

对于其他子类也是如此。

然后,您将实例化任何类别的单个食人鱼植物,以填充单个管道。他们每个人都会按照班级的定义行事——一个大嚼,一个吐火,一个完全跳出管道,四处追赶马里奥。

于 2013-01-03T06:52:24.703 回答