我需要關於接口的建議。我有一個單位可以攻擊其他單位。攻擊可以是空中或地面。我需要單一的方法來實現攻擊,稱爲attack()
。有些單位只能攻擊地面單位,一些空中單位或兩者。接口實現隱藏方法
這是我想出迄今:
public interface Attack() {
public void attack(SCObject object);
}
public interface GroundAttack() extends Attack {
public void groundAttack(SCObject object);
}
public interface AirAttack() extends Attack {
public void airAttack(SCObject object);
}
我可以有不同的單位:
Unit extends SCObject implements GroundAttack {
}
Unit extends SCObject implements AirAttack {
}
Unit extends SCObject implements AirAttack, GroundAttack {
}
問題是這樣的實施將揭示兩個地面和空中的選項,而我只想要attack()
方法可見。 你可以提出解決方案嗎?或者這對你看起來好嗎?
您的限制(空對地)是靜態的(即可在編譯時解析)還是動態的運行) ? – 2012-08-13 10:06:51
在運行時解決此問題 – 2012-08-13 10:15:52