java作业 (武器数组)

在这里插入图片描述
两个接口 一个实现移动 一个实现攻击:

package com.Test.Demo.WuQiShuZu;

public interface GongJi {
    public void gongJi();
}


package com.Test.Demo.WuQiShuZu;

public interface YiDong {
    public void yiDong();
}

一个武器类:

package com.Test.Demo.WuQiShuZu;

public class WuQi {
    private String name;
    public WuQi(String name){
        this.name=name;
    }
    public String getName(){
        return this.name;
    }

}

三个武器子类,分别实现不同的接口:

package com.Test.Demo.WuQiShuZu;

public class YunShuJi extends WuQi implements YiDong {
    public YunShuJi(){
        super("运输机");
    }
    public void yiDong(){
        System.out.println("运输机在移动");
    }
    @Override
    public String toString() {
        return this.getName();
    }
}

package com.Test.Demo.WuQiShuZu;

public class ZhanDouJi extends WuQi implements YiDong ,GongJi {
    public ZhanDouJi(){
        super("战斗机");
    }
    public void gongJi(){
        System.out.println("战斗机在攻击");
    }
    public void yiDong(){
        System.out.println("战斗机在移动");
    }
    @Override
    public String toString() {
        return this.getName();
    }
}

package com.Test.Demo.WuQiShuZu;

public class GaoShePao extends WuQi implements GongJi{

    public GaoShePao(){
        super("高射炮");
    }
    public void gongJi() {
        System.out.println("高射炮在攻击");
    }

    @Override
    public String toString() {
        return this.getName();
    }
}

一个军队类:

package com.Test.Demo.WuQiShuZu;

public class JunDui {
    private int len;
    private int cnt;
    private WuQi[] wuQi;
    public JunDui(int len){
        this.len=len;
        this.wuQi=new WuQi[len];
    }
    public void addWuQi(WuQi wuQi)throws Exception{
        if(cnt==this.len){
            throw new AddWuex("武器数量达到上限!!!");
        }
        System.out.println(wuQi+"增加成功");
        this.wuQi[cnt++]=wuQi;
    }
    public void ggg(){
        for(int i=0;i<this.cnt;i++){
            if(this.wuQi[i] instanceof GongJi){ 
                GongJi pao=(GongJi) this.wuQi[i];//此处把类强转为了接口!
                pao.gongJi();
            }
        }
    }
    public void yyy(){
        for(int i=0;i<this.cnt;i++){
            if(this.wuQi[i] instanceof YiDong){
                YiDong pao=(YiDong) this.wuQi[i];//此处把类强转为了接口!
                pao.yiDong();
            }
        }
    }
}

一个自定义的异常,用于增加武器时抛出:

package com.Test.Demo.WuQiShuZu;

public class AddWuex extends Exception{//自定义的异常类
    public AddWuex(){

    }
    public AddWuex(String tt){
    super(tt);
    }
}

一个测试类:

package com.Test.Demo.WuQiShuZu;

public class Test {
    public static void main(String args[]){
        JunDui junDui =new JunDui(3);
        try{
            junDui.addWuQi(new GaoShePao());
            junDui.addWuQi(new YunShuJi());
            junDui.addWuQi(new ZhanDouJi());
            junDui.addWuQi(new ZhanDouJi());
        }catch (Exception e){
            System.out.println(e.getMessage());
        }
        junDui.ggg();
        junDui.yyy();
    }
}


程序执行结果:

					高射炮增加成功
					运输机增加成功
					战斗机增加成功
					武器数量达到上限!!!
					高射炮在攻击
					战斗机在攻击
					运输机在移动
					战斗机在移动
原文地址:https://www.cnblogs.com/fxzemmm/p/14847956.html