重点内容
1、建立一个Java抽象类Drink 应当
a、声明一个抽象方法taste() 该方法负责输出饮料的味道
b、声明int型常量来代表不同的饮料类型 咖啡、啤酒、牛奶 如
c、声明静态工厂方法getDrink(int drinkType)
根据传入的参数创建不同的饮料对象 并返回该对象 建议使用switch语句。
该方法要求声明DrinkNotFoundException
当没有相对应的饮料类型时 抛出该异常。
2、建立Drink的具体子类
a、分别建立Drink的子类 Coffee 代表咖啡 Beer 代表啤酒 Milk 代表牛奶 ;
b、实现taste()方法 要求在控制台打印各自的味道特征。
3、建立异常类DrinkNotFoundException
a、继承Exception
b、在Drink的 方 法getDrink(int drinkType)中 声 明 引 发DrinkNotFoundException异常
当传入的参数没有相对应的饮料类型时 抛出异常。
c、在使用getDrink方法的类中捕捉该异常。
4、建立Test测试类 测试以上内容的正确性
a、编写main方法 通过命令行传参的方式传入某种饮料的类型。
b、在main方法中 调用Drink类的getDrink方法 获得相应的饮料对象。
注意捕获DrinkNotFoundException。
c、然后调用该饮料对象的taste()方法 输出该饮料的味道。
//主类抽象类
abstract class Drink {
public abstract void taste(); // 该方法负责输出饮料的味道
int i1; //咖啡
int i2; //啤酒
int i3; //牛奶
public static void getDrink(int drinkType) throws DrinkNotFoundException{ //声明异常
if(drinkType<1||drinkType>3){
throw new DrinkNotFoundException();
}
switch (drinkType) {
case 1:
System.out.println("咖啡");
break;
case 2:
System.out.println("啤酒");
break;
case 3:
System.out.println("牛奶");
break;
default:
break;
}
}
}
编写异常类
class DrinkNotFoundException extends Exception{ //所有的异常类都继承Exception
public DrinkNotFoundException() {
super();
// TODO Auto-generated constructor stub
}
public DrinkNotFoundException(String message) { //直接使用Exception的message属性
super(message);
// TODO Auto-generated constructor stub
}
}
三个实例子类来继承抽象父类来重写父类的味道方法
1.啤酒类
public class Beer extends Drink{
@Override
public void taste() {
// TODO Auto-generated method stub
System.err.println("酒不醉人人自醉");
}
}
2.咖啡类
public class Coffee extends Drink{
@Override
public void taste() {
// TODO Auto-generated method stub
System.err.println("苦涩当中有着一丝甜意");
}
}
3.牛奶类
public class Mike extends Drink {
@Override
public void taste() {
// TODO Auto-generated method stub
System.err.println("浓浓的奶香味");
}
}
测试类
public class Test {
public static void main(String[] args) throws DrinkNotFoundException {
Coffee c = new Coffee();
Mike m = new Mike();
Beer b = new Beer();
Scanner sc = new Scanner(System.in);
System.out.println(“请输入你要购买的饮料的编号:”);
try {
int i = sc.nextInt();
b.getDrink(i);
if(i==1){
c.taste();
}else if(i==2){
b.taste();
}else{
m.taste();
}
} catch (Exception e) {
System.err.println(“没有这个饮料品牌,您的输入有误!”);
e.printStackTrace();
}
}
}