2015-06-12 68 views
0

我想爲我的LigGDX遊戲使用抽象屏幕。我讀過很多網站,其中許多網站只使用抽象屏幕將通用代碼(例如常用方法)分組在一起。如果是這種情況,我們可以簡單地使用一個普通的類來完成任務。在LibGDX中使用抽象屏幕

抽象屏幕的原始目的應該是如下:

當一個抽象類的子類是,子類通常提供實現對所有的在它的父類的抽象方法。但是,如果沒有,那麼子類也必須聲明爲抽象。

有人可以解釋這種情況。

謝謝

+0

在這些例子中,抽象類可能用於他們的典型目的:代碼清晰和萬無一失。如果他們自己沒有任何用途,他們不應該被實例化。 – Tenfour04

回答

1

抽象允許你有許多類共享一些功能,但可能在實現中有所不同。然後你可以聲明某些東西是抽象類,並將實現留給子類。

例如,也許你的程序有一隻貓,一隻狗,一隻老鼠和一隻蜘蛛。那麼,這四個都是動物,它們都具有一些功能,即使它們在細節上有很大不同。貓,狗,老鼠和蜘蛛都動起來,他們都吃東西,但他們做得非常不同。你可能會聲明一個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文檔瞭解更多詳情。

+0

對不起,我想你不明白我的問題。您的示例和官方文檔是可以理解的。但是,我的問題是許多網站在LibGDX中使用抽象屏幕而不使用抽象方法,只將所有常用方法組合在一起。它可以簡單地使用普通的父類來完成任務。 – user1232250

+0

它可能更容易組織,因爲你不能實例化一個抽象類。你能鏈接到其中一個網站嗎? –

+0

http://code.google.com/p/steigert-libgdx/source/browse/trunk/tyrian-game/src/com/blogspot/steigert/tyrian/screens/AbstractScreen.java?r=52 – user1232250