2012-04-25 30 views
1

SimpleApp教程中,作者將他所有的代碼放在一個類文件中。雨水和水桶在裏面。我會如何將代碼移到不同的類中?

我試着把代碼放到另一個類中,但之後我的代碼中會有重複的方法,並且邏輯上它會不正確。例如,我在遊戲中不能有兩種創建方法。

我怎麼會拿tutorial,並把它分成不同的類?

+0

你的問題是不是很clear.Can粘貼代碼你想轉移到一個單獨的課程。您應該始終通過IDE中提供的重構工具來移動代碼。 – Edge 2012-04-25 16:14:44

+0

它在一個類中的所有一個,向下滾動到底部,你會看到我的意思 – Blue 2012-04-25 16:29:23

+2

它是反對SO規範談論代碼不存在這裏的問題。 – 2012-04-25 16:37:14

回答

0

這很簡單:你可以從OOP風格的編碼中受益:
只需使用超類RainBucket,其中包含所有方法,每個方法的代碼最少。
從這個超類擴展的其他兩個類,並在它重寫你的類要使用的方法,這樣你會acomplishing以下OOP規則:

  1. 傳承:當您從超級派生其他類的兩個對象:

    class Bucket extends RainBucket {

    class Rain extends RainBucket {

  2. 多態性:你可以聲明兩個對象從相同的超類 但作爲值就像 這個分配給兩個不同的派生類:

    RainBucket bucket = new Bucket()

    RainBucket rain = new Rain()

+0

我認爲我做了繼承權,但我不明白這種多態性。我創建了但我不知道該把它放在哪裏,所以我把它放在最前面。然後我在_create_和_render_方法中都添加了** bucket **和** rain **,但是彈出一個錯誤提示該方法未定義。所以有什麼問題? – Blue 2012-04-25 18:01:18

+0

在此處發佈代碼。 – GingerHead 2012-04-26 05:47:47

+0

'RainBucket bucket = new Bucket(); \t RainBucket rain = new Rain(); \t @Override \t公共無效創建(){ \t \t雨(); \t \t Bucket(); \t} \t @Override \t公共無效渲染(){ \t \t雨(); \t \t Bucket(); \t}'這是在主類 – Blue 2012-04-26 13:38:58

0

你會抽象出共同的功能集成到一個Abstract classInterface,然後同時擁有雨水桶從類繼承。

因此,對於您的特定示例,請通過這兩個類,找到所有常用函數並將它們抽象爲超類。

+0

您可以提供一個示例或鏈接,其中有人這樣做嗎?> – Blue 2012-04-25 16:30:20

+0

@BluFire位於帖子中的鏈接描述了這一點。查看抽象類鏈接。它實現了一個叫做'GraphicObject'的抽象類,帶有一些函數。然後這些由''Circle'繼承,''擴展'它。 – Aidanc 2012-04-25 16:33:53

+0

對不起,由於某種原因,我沒有注意到鏈接 – Blue 2012-04-25 17:35:16

相關問題