1

所以我想做一个游戏引擎,我立刻意识到必须“自动导入”东西。例如,当你 时implements Runnable,你会得到一个错误,因为它必须run()在类中有方法。

你怎么做到这一点?我将如何拥有一个类,当实现时,强制一个方法,然后自动运行这个方法?

回答时可用的示例:

我有一个框架类。这个框架类在实现时总是使用一个方法,在实现它的类中,命名为draw(),并且必须实现才能使用框架类。示例代码:

public class test implements HFrame {
    // constructor
    public test() {

    }

    // method called when test is run
    public static void init() {
        HFrame f = new HFrame(WIDTH, HEIGHT);
        f.display(); // makes the frame visible
    }

    // method that frame will always call when it is implemented
    public void draw() {
        // stuff to draw
        new Circle(0, 0, 50, 50);
    }
}

使用评论,我将如何让它工作?

感谢您的帮助,如果这不是最好的措辞,我深表歉意...

4

3 回答 3

1

使用要运行的方法创建一个接口。将使用的所有类都必须实现该接口。这正是它的Runnable工作原理: Runnable是一个接口,void run()线程可以调用一个方法来执行可运行对象。

于 2013-10-07T18:39:01.713 回答
1

为了“强制”一个类来实现某些方法,你使用一个接口,下面是一个例子

public interface GameEngineInterface {
    void init();
    void draw();
    Vector3d annotherMethod(Object object);
}

您的游戏引擎将使用的任何类都将实现 GameEngineInterface 引擎。

GameEngine 方法可以这样工作

public Object someMethod(GameEngineInterface anyObjectThatImplementsGameEngineInterface){
    //method body
}

GameEngine 然后不关心实现方法的细节,只关心它可以调用这些方法。

于 2013-10-07T18:39:15.727 回答
0

看起来您需要实现模板方法设计模式。在您的示例中,run将调用draw(),它必须在具体类中实现。

于 2013-10-07T18:42:54.260 回答