私はこの質問の変種を見たことがありますが、私の問題に本当に対処できません。クラスが別のクラスを継承しているかどうかを確認する方法
私はクラスで軍隊を建設していると言います。私の継承構造の先頭には、抽象的な「Unit」クラスがあります。その後、抽象的な "飛行"、 "グラウンド"および "建物"クラスを拡張します。その後、フライングを拡張する具体的な "ヘリコプター"と "Jet"クラス。コンクリート「兵士」と「タンク」は、グランドを延長するクラスです。最後に建物を拡張する「HQ」と「Supply」となります。私は敵は、ユニットのいずれかの形式になりたい
public void attack(Unit enemy){
if(enemy.getSuperclass().equals(Flying)){
System.out.print("Soldiers cant attack flying units");
}
else{
//Code to attack enemy here
}
:
次は「兵士」クラス下の方法です。これは、兵士が建物と他の地上ユニットの両方を攻撃できるはずですが、私は兵士が飛行物体を攻撃できるようにしたくありません。
明白な問題は、私はユニットとして敵を宣言したので、それはそれが属するため、存在していないユニットのスーパークラスを見つけようとしているサブクラスを知らないということです。
ユニットのタイプを手動で設定しているすべてのユニットにゲッタを持たせることができると確信していますが、それはより多くの作業で効率的ではありません。 enemy
はFlying
から派生クラスのいずれかのインスタンスであるかどうかを確認、というよりもFlying
クラスのために特別にをチェックします
if(enemy instanceof Flying){
へ
ワウ、同じ5秒間のタイムスライスで公開された5つの同等の回答! –
クラス継承はallをモデル化するのに制限的かもしれないので、インタフェースを使用することもできます。しかし最初に継承を試みるのは大丈夫です。 –
* instanceof *驚き! – NINCOMPOOP