2.模拟一个军队作战场景,军队里面有各种兵种,如骑兵、步兵、炮兵等,每种兵都能攻击敌人,但攻击敌人的具体方式不一样。建立这3种兵种类,每种3个对象。然后建立一个军官对象,军官也会上场去攻击敌人,但是军

题目:
2.模拟一个军队作战场景,军队里面有各种兵种,如骑兵、步兵、炮兵等,每种兵都能攻击敌人,但攻击敌人的具体方式不一样。建立这3种兵种类,每种3个对象。然后建立一个军官对象,军官也会上场去攻击敌人,但是军官还有一种行,就是发号令,军官发号令了,所有的兵,不论什么兵种都去战场攻击敌人。程序运行效果就是一个军官开始发号令,然后所有的土兵包括军官都去攻击敌人,并显示每个人攻击敌人的方式。

分析:

代码实现

主函数测试类

package exer2;

/**
 * @author 胖胖的山头
 * @create 2020-10-28 18:44
 */
public class ArmyOperationsTest {
    
    
    public static void main(String[] args) {
    
    
        Soldier[] soldiers = new Soldier[10];

        for (int i = 0; i < 10; i++) {
    
    
            if(i<3){
    
    
                soldiers[i]= new Cavalryman();
            }
            else if (i<6){
    
    
                soldiers[i]=new Infantry();
            }
            else if (i<9){
    
    
                soldiers[i]=new Artillery();
            }
            else{
    
    
                soldiers[i]=new Officer();
            }
        }

        Officer officer=(Officer) soldiers[9];
        officer.Signal(soldiers);
    }
}

抽象士兵类

package exer2;

/**
 * 士兵
 * @author 胖胖的山头
 * @create 2020-10-28 18:47
 */
public abstract class Soldier {
    
    
   abstract void attack();
}

发号令接口类

package exer2;

/**
 * @author 胖胖的山头
 * @create 2020-10-28 19:10
 */
public interface SendSignals {
    
    
    void Signal(Soldier[] soldier);
}

骑兵类

package exer2;

/**
 * 骑兵
 * @author 胖胖的山头
 * @create 2020-10-28 19:01
 */
public class Cavalryman extends Soldier{
    
    
    @Override
    void attack() {
    
    
        System.out.println("骑兵骑马挥舞大刀攻击敌人");
    }
}

步兵类

package exer2;

/**
 * 步兵
 * @author 胖胖的山头
 * @create 2020-10-28 19:02
 */
public class Infantry extends Soldier{
    
    
    @Override
    void attack() {
    
    
        System.out.println("步兵端起枪打击敌人");
    }
}

炮兵类

package exer2;

/**
 * 炮兵
 * @author 胖胖的山头
 * @create 2020-10-28 19:02
 */
public class Artillery extends Soldier{
    
    
    @Override
    void attack() {
    
    
        System.out.println("炮兵开炮攻击敌人");
    }
}

军官类

package exer2;

/**
 * 军官
 * @author 胖胖的山头
 * @create 2020-10-28 19:03
 */
public class Officer extends Soldier implements SendSignals {
    
    
    @Override
    void attack() {
    
    
        System.out.println("军官开始开始攻击敌人");
    }

    @Override
    public void Signal(Soldier[] soldier) {
    
    
        for (int i = 0; i < soldier.length; i++) {
    
    
            soldier[i].attack();//调用各个对象的attack()方法;
        }
    }
}

实现结果图

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_46931134/article/details/109343817