繁体   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