【发布时间】:2017-11-17 13:58:34
【问题描述】:
嗨,我是 C# 控制台应用程序的新手,我正在使用抽象和覆盖,但我在 public abstract double Compute() 的第一个方法中得到堆栈,我遇到了一个错误,它说 无法声明主体,因为它被标记为抽象请帮助我。谢谢你!
`
abstract class Cake
{
public string _flavor, _size;
public int _quantity;
public Cake(string flavor, string size, int quantity)
{
_flavor = flavor;
_size = size;
_quantity = quantity;
}
public abstract double Compute()
{
double price;
if(_flavor == "Chocolate" && _size == "Regular")
{
price = 250.50;
}
else if (_flavor == "Chocolate" && _size == "Large")
{
price = 450.50;
}
else if (_flavor == "Strawberry" && _size == "Regular")
{
price = 300.50;
}
else
{
price = 500.75;
}
return price;
}
}
class BirthdayCake:Cake
{
public int _numOfCandles;
public BirthdayCake(string flavor, string size, int quantity, int numOfCandles):base(flavor,size,quantity)
{
_numOfCandles = numOfCandles;
}
public override double Compute()
{
return _numOfCandles * 10.00;
}
}`
【问题讨论】:
-
当您有默认实现但希望允许子类覆盖时,请使用 virtual 而不是 abstract。
-
如果你在一个抽象类中声明一个抽象函数,你不应该在同一个类中声明body。它必须实现其派生类。
标签: c#