我想爲我的LigGDX遊戲使用抽象屏幕。我讀過很多網站,其中許多網站只使用抽象屏幕將通用代碼(例如常用方法)分組在一起。如果是這種情況,我們可以簡單地使用一個普通的類來完成任務。在LibGDX中使用抽象屏幕
抽象屏幕的原始目的應該是如下:
當一個抽象類的子類是,子類通常提供實現對所有的在它的父類的抽象方法。但是,如果沒有,那麼子類也必須聲明爲抽象。
有人可以解釋這種情況。
謝謝
我想爲我的LigGDX遊戲使用抽象屏幕。我讀過很多網站,其中許多網站只使用抽象屏幕將通用代碼(例如常用方法)分組在一起。如果是這種情況,我們可以簡單地使用一個普通的類來完成任務。在LibGDX中使用抽象屏幕
抽象屏幕的原始目的應該是如下:
當一個抽象類的子類是,子類通常提供實現對所有的在它的父類的抽象方法。但是,如果沒有,那麼子類也必須聲明爲抽象。
有人可以解釋這種情況。
謝謝
抽象允許你有許多類共享一些功能,但可能在實現中有所不同。然後你可以聲明某些東西是抽象類,並將實現留給子類。
例如,也許你的程序有一隻貓,一隻狗,一隻老鼠和一隻蜘蛛。那麼,這四個都是動物,它們都具有一些功能,即使它們在細節上有很大不同。貓,狗,老鼠和蜘蛛都動起來,他們都吃東西,但他們做得非常不同。你可能會聲明一個Animal抽象類,然後是一個Spider類,一個Cat類,一個Dog類,最後是一個Rat類,它們都會擴展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文檔瞭解更多詳情。
對不起,我想你不明白我的問題。您的示例和官方文檔是可以理解的。但是,我的問題是許多網站在LibGDX中使用抽象屏幕而不使用抽象方法,只將所有常用方法組合在一起。它可以簡單地使用普通的父類來完成任務。 – user1232250
它可能更容易組織,因爲你不能實例化一個抽象類。你能鏈接到其中一個網站嗎? –
http://code.google.com/p/steigert-libgdx/source/browse/trunk/tyrian-game/src/com/blogspot/steigert/tyrian/screens/AbstractScreen.java?r=52 – user1232250
在這些例子中,抽象類可能用於他們的典型目的:代碼清晰和萬無一失。如果他們自己沒有任何用途,他們不應該被實例化。 – Tenfour04