子类覆盖了父类中的同名方法,父类引用调用子类中覆盖了父类中同名方法,为什么会调用父类中的同名方法
public abstract class Beverage{
String description = "Unknow Beverage";
public String getDescription(){
return "Unknow Beverage";
}
public abstract double cost();
}
public abstract class CondimentDecorator extends Beverage{
public abstract String getDescription();
}
public class Espresso extends Beverage{
public Espresso(){
description = "Espresso";
}
public double cost(){
return 1.99;
}
}
public class HouseBlend extends Beverage{
public HouseBlend(){
description = "House Blend Coffee";
}
public double cost(){
return 1;
}
}
public class DarkRoast extends Beverage{
public DarkRoast(){
description = "Dark Roast Coffee";
}
public double cost(){
return 1.2;
}
}
public class Mocha extends CondimentDecorator{
Beverage beverage;
public Mocha(Beverage beverage){
this.beverage = beverage;
}
public String getDescription{
return beverage.getDescription+",Mocha";
}
public double cost(){
return 0.2+beverage.cost();
}
}
public class Whip extends CondimentDecorator{
Beverage beverage;
public Whip(Beverage beverage){
this.beverage = beverage;
}
public String getDescription{
return beverage.getDescription+",Whip";
}
public double cost(){
return 0.9+beverage.cost();
}
}
public class StarbuzzCoffee{
public static void main(String args[]){
Beverage beverage =new Espresso();
System.out.println(beverage.getDescription()+"$"+beverage.cost());
Beverage beverage2 = new DarkRoast();
beverage2 = new Mocha(beverage2);
beverage2 = new Mocha(beverage2);
beverage2 = new Whip(beverage2);
System.out.println(beverage2.getDescription()+"$"+beverage2.cost());
}
}
调用getDescription()的时候为什么只显示,抽象类中的Unkunw Beverage???为什么没有被装饰??我很奇怪