抽象类Drink:

public abstract class Drink {
    public static final int COFFEE = 1;
    public static final int BEER = 2;
    public static final int MILK = 3;

    public abstract void taste();

    public static Drink getDrink(int drinkType) throws DrinkNotFoundException {
        switch (drinkType) {
            case COFFEE:
                return new Coffee("星巴克");
            case BEER:
                return new Beer("黄色");
            case MILK:
                return new Milk("新鲜");
            default:
                throw new DrinkNotFoundException("没有相应的饮料类型");
        }
    }
}

子类Coffee:

public class Coffee extends Drink {
    private String brand;

    public Coffee(String brand) {
        this.brand = brand;
    }

    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    @Override
    public void taste() {
        System.out.println("这是一杯" + brand + "咖啡,味道浓郁,带有一丝苦涩。");
    }
}

子类Beer:

public class Beer extends Drink {
    private String color;

    public Beer(String color) {
        this.color = color;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    @Override
    public void taste() {
        System.out.println("这是一杯" + color + "啤酒,味道苦涩,带有一点点酸味。");
    }
}

子类Milk:

public class Milk extends Drink {
    private String state;

    public Milk(String state) {
        this.state = state;
    }

    public String getState() {
        return state;
    }

    public void setState(String state) {
        this.state = state;
    }

    @Override
    public void taste() {
        System.out.println("这是一杯" + state + "牛奶,味道甜美,带有一点点奶香。");
    }
}

异常类DrinkNotFoundException:

public class DrinkNotFoundException extends Exception {
    public DrinkNotFoundException(String message) {
        super(message);
    }
}

测试类Test:

public class Test {
    public static void main(String[] args) {
        try {
            int drinkType = Integer.parseInt(args[0]);
            Drink drink = Drink.getDrink(drinkType);
            drink.taste();
        } catch (DrinkNotFoundException e) {
            System.out.println("没有相应的饮料类型");
        } catch (NumberFormatException e) {
            System.out.println("饮料类型必须是数字");
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("请传入饮料类型");
        }
    }
}

运行结果:

$ java Test 1
这是一杯星巴克咖啡,味道浓郁,带有一丝苦涩。
$ java Test 2
这是一杯黄色啤酒,味道苦涩,带有一点点酸味。
$ java Test 3
这是一杯新鲜牛奶,味道甜美,带有一点点奶香。
$ java Test 4
没有相应的饮料类型
$ java Test a
饮料类型必须是数字
$ java Test
请传入饮料类型
``
建立一个Java抽象类Drink应当:a、	声明一个抽象方法taste该方法负责输出饮料的味道;b、	声明int型常量来代表不同的饮料类型咖啡、啤酒、牛奶:c、	声明静态方法getDrinkint drinkType根据传入的参数创建不同的饮料对象并返回该对象建议使用switch语句。该方法要求声明DrinkNotFoundException当没有相对应的饮料类型时抛出该异常。2、	建立Drink

原文地址: http://www.cveoy.top/t/topic/dftx 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录