我有下面的代碼使用抽象的關鍵字這是工作的罰款:代碼不工作,當我在中產階級
public abstract class Beverage
{
public string description = "Unknown beverage";
public virtual string getDescription()
{
return description;
}
public abstract double cost();
}
public abstract class condimentDecorator : Beverage
{
// public abstract string getDescription();
}
public class DarkRoast : Beverage
{
public DarkRoast()
{
description = "DarkRoast";
}
public override double cost()
{
return 2.10;
}
}
public class Espresso : Beverage
{
public Espresso()
{
description = "Espresso";
}
public override double cost()
{
return 1.99;
}
}
public class HouseBlend : Beverage
{
public HouseBlend()
{
description = "House Blend Coffee";
}
public override double cost()
{
return .89;
}
}
public class Mocha : condimentDecorator
{
Beverage beverage;
public Mocha(Beverage beverage)
{
this.beverage = beverage;
}
public override string getDescription()
{
return beverage.getDescription() + ", Mocha";
}
public override double cost()
{
return .20 + beverage.cost();
}
}
public class Soy : condimentDecorator
{
Beverage beverage;
public Soy(Beverage beverage)
{
this.beverage = beverage;
}
public override string getDescription()
{
return beverage.getDescription() + ", Soy";
}
public override double cost()
{
return .10 + beverage.cost();
}
}
public class Whip : condimentDecorator
{
Beverage beverage;
public Whip(Beverage beverage)
{
this.beverage = beverage;
}
public override string getDescription()
{
return beverage.getDescription() + ", Whip";
}
public override double cost()
{
return .10 + beverage.cost();
}
}
我以這種方式使用它:
protected void Page_Load(object sender, EventArgs e)
{
Beverage beverage2 = new DarkRoast();
beverage2 = new Mocha(beverage2);
beverage2 = new Mocha(beverage2);
beverage2 = new Whip(beverage2);
Response.Write ("<br> " + beverage2.getDescription() + " : $" + beverage2.cost().ToString());
}
的問題:我希望所有子類「condimentDecorator」來強制覆蓋getDescription()功能可按,對,我在「condimentDecorator」類下面寫代碼:
public abstract string getDescription();
但是,這使得我目前的功能發生了變化,並且沒有給出想要的結果,它只是將「未知飲料」顯示爲getDescription()的值,它是父類大部分類的值。
正常結果:使用後
DarkRoast, Mocha, Mocha, Whip : $2.6
結果「公共抽象的字符串getDescription()」:
Unknown beverage : $2.6
請建議我該怎麼寫/變化,這樣我可以強制的子類「condimentDecorator」重寫「getDescription();」並且在沒有它的情況下也能獲得resutl的工作。