j'ai sous le code qui fonctionne bien:code ne fonctionne pas quand j'utiliser mot-clé abstrait classe moyenne
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();
}
}
Je l'utilise de cette façon:
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());
}
Problème: i veulent toutes les classes d'enfants de « condimentDecorator » pour passer outre avec force getDescription() funciton, pour que je l'ai écrit ci-dessous le code dans la classe « condimentDecorator »:
public abstract string getDescription();
mais cela fait des changements dans mon fonctionnement actuel et ne donne pas le résultat souhaité, il montre simplement "boisson inconnue" comme valeur de getDescription() qui est la valeur du parent le plus classe.
résultat normal:
DarkRoast, Mocha, Mocha, Whip : $2.6
Résultat après avoir utilisé "string public abstract getDescription()":
Unknown beverage : $2.6
S'il vous plaît me suggérer que dois-je écrire/changement afin que je puisse forcer les classes d'enfants de "condimentDecorator" pour remplacer "getDescription();" et obtient également resutl comme son travail sans elle.