abstract class Beverage {
abstract void Brew();
abstract void addCondiments();
final void prepare(){
boilWater();
Brew();
poulnCup();
if(customerWantsCondiments()){
addCondiments();
}
serve();
}
private void boilWater(){
System.out.println("boiling water...");
}
private void poulnCup(){
System.out.println("pouring into a cup...");
}
private boolean customerWantsCondiments(){
return true;
}
private void serve(){
System.out.println("serving the beverage.");
}
}
class Coffee1 extends Beverage{
@Override
public void Brew(){
System.out.println("Brewing coffee");
}
@Override
public void addCondiments(){
System.out.println("add suger and milk..");
}
}
class Tea extends Beverage{
@Override
public void Brew(){
System.out.println("Brewing tea");
}
@Override
public void addCondiments(){
System.out.println("add lemon and honey..");
}
}