用java语言编写程序,不会写,跪求大佬帮忙看看这道题该怎么写?

表示射手的接口名为Adc,包含名为shoot的行为,表示一次射击造成若干伤害。不同的射手shoot造成的伤害不同,弓箭手每次伤害为10,飞镖客每次伤为12,害枪手每次为18,炮手每次伤害为30。

定义一个静态方法Kill表示不同射手攻击某目标的过程,设定目标的生命值,射手循环进行射击,直到目标生命值为0。

用类分别表示不同类型的射手,并用多态定义和调用Kill方法。

/**
 * ADC
 */
public abstract class Adc {

    /**
     * 伤害
     */
    public abstract Integer getHurt();

    /**
     * 射击
     * @param life 生命值
     */
    public void shoot(int life) {
        int hurt = this.getHurt();
        int count = 0;
        for (int i = 0; i < life; i += hurt) {
            System.out.println("第" + (++count) + "次射击");
        }
    }
}

/**
 * 弓箭手
 */
public class Archer extends Adc {

    @Override
    public Integer getHurt() {
        return 10;
    }

    @Override
    public void shoot(int life) {
        System.out.println("弓箭手开始射击");
        super.shoot(life);
        System.out.println("弓箭手结束射击");
    }
}

/**
 * 飞镖客
 */
public class FlyingEscort extends Adc {

    @Override
    public Integer getHurt() {
        return 12;
    }

    @Override
    public void shoot(int life) {
        System.out.println("飞镖客开始射击");
        super.shoot(life);
        System.out.println("飞镖客结束射击");
    }
}

/**
 * 炮手
 */
public class Gunner extends Adc {

    @Override
    public Integer getHurt() {
        return 30;
    }

    @Override
    public void shoot(int life) {
        System.out.println("炮手开始射击");
        super.shoot(life);
        System.out.println("炮手结束射击");
    }
}

/**
 * 害枪手
 */
public class Shooter extends Adc {

    @Override
    public Integer getHurt() {
        return 18;
    }

    @Override
    public void shoot(int life) {
        System.out.println("害枪手开始射击");
        super.shoot(life);
        System.out.println("害枪手结束射击");
    }
}

/**
 * Kill
 */
public class Kill {

    public static void kill(int life, Adc adc) {
        adc.shoot(life);
    }

    public static void main(String[] args) {
        int life = 100;
        
        kill(life, new Archer());

        System.out.println();
        
        kill(life, new FlyingEscort());

        System.out.println();

        kill(life, new Gunner());

        System.out.println();

        kill(life, new Shooter());
    }
}

 

自己多想想,没思路,再来问,,

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632