重點內容
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();
}
}
}