在 LibGDX 中使用抽象屏幕

Using abstract screen in LibGDX

我想为我的 LigGDX 游戏使用抽象屏幕。我读过很多网站,其中许多网站仅使用抽象屏幕将通用代码(例如通用方法)组合在一起。如果是这种情况,我们可以简单地使用一个普通的class来完成任务。

抽象屏的初衷应该是这样的:

当抽象 class 被子class 时,子class 通常为其父class 中的所有抽象方法提供实现。但是,如果不是,则 subclass 也必须声明为抽象的。

谁能解释一下这种情况。

谢谢

抽象允许您拥有许多共享某些功能但在实现上可能不同的 classes。然后你可以声明一些东西是抽象的 class 并将实现留给 subclasses.

例如,您的程序中可能有猫、狗、老鼠和蜘蛛。好吧,所有这四种动物都是动物,尽管它们在细节上有很大不同,但它们都共享一些功能。猫、狗、老鼠和蜘蛛都会移动,它们都会吃东西,但它们的做法却大不相同。您可以声明一个 Animal 抽象 class,然后是 Spider class、Cat class、Dog class,最后是 Rat class 所有扩展 Animal。

public abstract class Animal {
    int numLegs;
    float speed; // in meters per second
    int weight;

    abstract void walk();

    abstract void eat(Object food);
}

public class Cat extends Animal {
    public Cat() {
        numLegs = 4; // cats generally have 4 legs
        weight = 10; // 10 pounds
        speed = 13; // cat can run 13 meters per second
    }

    public void walk() {
        // TODO: implement walking functionality for cat
    }

    public void eat(Object food) {
        // TODO: implement check to make sure food isn't poisonous
        // TODO: make cat eat food
    }
}

// Similarly for other animals

public class MyProgram {
    public void myWorld() {
        List<Animal> animals = new ArrayList<Animal>();
        animals.add(new Cat());
        animals.add(new Spider());

        for (Animal a : animals) {
           a.move();
        }
    }
}

查看 this 文档了解更多详情。