我需要关于接口的建议。我有一个单位可以攻击其他单位。攻击可以是空中或地面。我需要单一的方法来实现攻击,称为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