好的,我會首先將代碼放在清晰的位置。抽象類的子類包含無法訪問抽象方法的實現的對象
***編輯: 通過在序列創建時將序列實例傳遞給對話框來解決問題,那麼對話框具有調用的內部引用。
public abstract class RavelSequence {
protected Dialog dialog; //every subclass uses one of these objects
public abstract void hit();
}
public class BattleSequence extends RavelSequence {
public void init(){ //this is the edited fix
dialog.setSequence(this); //
} //
public void hit(){ //the effect of a 'hit' in battle
doSomething();
}
}
public class OutOfBattleSequence extends RavelSequence {
public void init(){ //this is the edited fix
dialog.setSequence(this); //
} //
public void hit(){ //the effect of a 'hit' outside battle
doSomethingElse();
}
}
public class Dialog extends Container implements Runnable {
private RavelSequence sequence; //this is the edited fix
public void run(){
if (somethingHappens)
sequence.hit();
}
public void setSequence (RavelSeqence sequence){ //this is the edited fix
this.sequence = sequence; //
} //
}
我希望發生什麼是該對話框能夠調用的方法打()在任何一個類擁有對話的情況下實現的。我正在使用IntelliJ IDEA,它告訴我'非靜態方法命中不能從靜態上下文中引用'。
整個事情在一個應用程序中運行,該應用程序根據遊戲的上下文創建Sequence對象的實例,因此命中將需要引用序列中的非靜態對象。
好的,這個工程!看起來這比我想象的要容易得多。我將編輯修改後的代碼到問題中。 謝謝! – sideways8