[英]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();
第一次,它運行良好:顯示對話框,用戶做出選擇,並且對話框被隱藏。 但是第二次,對話框沒有被隱藏(在用戶選擇之后)。
我使用調試器來查看發生了什么,結論是:
如果有人可以解釋一下我在做什么呢……謝謝。
這是因為gd_visible
是static
。 刪除static關鍵字,它應該可以工作。 靜態字段不屬於實例,但它們屬於類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.