インターフェイスに関するアドバイスが必要です。他のユニットを攻撃できるユニットというクラスがあります。攻撃は空中または地上で行うことができます。と呼ばれる攻撃を達成するための単一の方法が必要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 {
}
問題は、この実装では2つの地上と空中のオプションが明らかになるのに対し、私はattack()
メソッドのみを表示したいということです。あなたは解決策を提案できますか、それともこれはあなたにとって大丈夫だと思いますか?