簡體   English   中英

Java繼承:第2個實例調用第1個實例方法

[英]Java Inheritance : 2nd instance calls 1st instance method

我的Android應用程序中的Java類有一個非常奇怪的問題。

我有一些子類擴展了我的抽象類GameDialog

GameDialog類

public abstract class GameDialog extends Sprite
{
    private static boolean gd_visible = false;

    protected GameDialog(GameScene scene, Camera camera, VertexBufferObjectManager pSpriteVertexBufferObject){
        ...
    }

    public boolean display(){
        if(!GameDialog.gd_visible) {
            ...
        }
    }

    protected boolean hide(){
        if(GameDialog.gd_visible){
            ...
        }
    }
}

PauseDialog類

public class PauseDialog extends GameDialog {

    public PauseDialog(GameScene scene, Camera camera, VertexBufferObjectManager pSpriteVertexBufferObject) {
        super(scene, camera, pSpriteVertexBufferObject);
        ...
        final ButtonSprite play_button = new ButtonSprite(...);
        play_button.setOnClickListener(setPlayButtonListener());
    }


    private OnClickListener setPlayButtonListener() {
        return new OnClickListener() {

            @Override
            public void onClick(ButtonSprite pButtonSprite, float pTouchAreaLocalX, float pTouchAreaLocalY) {
                hide();
            }
        };
    }
}

每當我想顯示一個對話框時,我都寫以下行:new PauseDialog(GameScene.this,camera,vbom).display();

第一次,它運行良好:顯示對話框,用戶做出選擇,並且對話框被隱藏。 但是第二次,對話框沒有被隱藏(在用戶選擇之后)。

我使用調試器來查看發生了什么,結論是:

  • 在第二個實例中,它調用第一個實例的hide()方法!

如果有人可以解釋一下我在做什么呢……謝謝。

這是因為gd_visiblestatic 刪除static關鍵字,它應該可以工作。 靜態字段不屬於實例,但它們屬於類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM