建立一个Java抽象类Drink应当:a、 声明一个抽象方法taste该方法负责输出饮料的味道;b、 声明int型常量来代表不同的饮料类型咖啡、啤酒、牛奶:c、 声明静态方法getDrinkint drinkType根据传入的参数创建不同的饮料对象并返回该对象建议使用switch语句。该方法要求声明DrinkNotFoundException当没有相对应的饮料类型时抛出该异常。2、 建立Drink
抽象类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
请传入饮料类型
``
原文地址: http://www.cveoy.top/t/topic/dftx 著作权归作者所有。请勿转载和采集!