在 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 文档了解更多详情。
我想为我的 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 文档了解更多详情。