问题描述:
星巴克咖啡冲泡法:
1.净水煮沸;
2.用沸水冲泡咖啡
3.将咖啡倒入杯子
4.加奶和糖
冲泡茶方法:
1.净水煮沸;
2.用沸水冲泡茶
3.将茶倒入杯中
4.加柠檬
问题思路:
仔细观察我们可以得知,虽为两种饮料但制作过程相似。**我们可以将其抽象出一个父类,相同的步骤可在父类中定义,不同的步骤可在父类中定义为抽象类,在子类中具体实现(方法覆写),**这样的好处是程序冗余度较低,易修改(即若要新加子类只需要子类继承父类,再具体实现抽象方法即可,删除即只删除子类即可)。
源代码如下:
abstract class Drink{
//抽象父类
public void prepare(){
boilWater();
brew();
dropIntoCup();
add();
}
public void boilWater(){
//净水煮沸与倒入杯中实则一样
System.out.println("1.煮沸水");
}
public void dropIntoCup(){
System.out.println("3.将饮料倒入杯中");
}
public abstract void brew();//抽象类
public abstract void add();
}
class Coffee extends Drink{
public void brew(){
System.out.println("2.泡咖啡");
}
public void add(){
System.out.println("4.加牛奶或糖");
}
}
class Tea extends Drink