C# 无法声明主体,因为它被标记为抽象
您好,我是C#console应用程序的新手,我正在使用abstract和override,但我在public abstract double Compute()中的第一个方法中得到了stack。我遇到一个错误,它说无法声明一个主体,因为它被标记为abstract,请帮助我。谢谢大家! `C# 无法声明主体,因为它被标记为抽象,c#,C#,您好,我是C#console应用程序的新手,我正在使用abstract和override,但我在public abstract double Compute()中的第一个方法中得到了stack。我遇到一个错误,它说无法声明一个主体,因为它被标记为abstract,请帮助我。谢谢大家! ` 如果您有默认实现,但希望允许子类重写如上所述,您不能为抽象类的抽象函数声明主体,请使用virtual而不是abstract 您需要从抽象类创建另一个类herited来声明所需的主体 abstract class
如果您有默认实现,但希望允许子类重写如上所述,您不能为
抽象类的抽象函数
声明主体,请使用virtual而不是abstract
您需要从抽象类
创建另一个类herited来声明所需的主体
abstract class Cake
{
public string _flavor, _size;
public int _quantity;
abstract public double Compute();
}
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()
{
//does your stuff
}
}
抽象类是一个类,其中可以包含抽象的函数
抽象函数是抽象类中没有主体的函数,它还强制您在派生类中重写它
这里的问题是您编写了一个具有主体的抽象函数
修复:使用virtual关键字而不是abstractvirtual不要强制您重写函数,您也可以在基类中拥有一个主体。
(注意:如果您使用的是虚拟函数而不是抽象函数,请也从类中删除抽象关键字。)抽象方法在同一类中没有实现,因此方法定义后面是分号,而不是普通的方法块。抽象类的派生类必须实现所有抽象方法。当抽象类从基类继承虚拟方法时,抽象类可以用抽象方法重写虚拟方法。e、 g:
抽象方法在同一类示例代码中没有实现
如果您有默认实现,但希望允许子类重写,请使用virtual而不是abstract。如果在抽象类中声明抽象函数,则不应在同一类中声明body。它必须实现它的派生类。根据这个例子,OP实际上更可能希望使用虚拟类而不是抽象类。@EdPlunkett Edited.Abhimanue Sanjay。抽象类不必至少有一个抽象函数。抽象类可以为空。SunilDhappadhule,谢谢。我不确定。但是空的抽象类有什么用呢?Abhimanue Sanjay,没有用,空的抽象类除了可以扩展类之外,与接口非常等效
abstract class Cake
{
public string _flavor, _size;
public int _quantity;
abstract public double Compute();
}
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()
{
//does your stuff
}
}
public abstract class A
{
public abstract void DoWork(int i);
public String DoWork(String str)
{
return str;
}
}
public class B:A
{
public virtual void DoWork(int i)
{
// here implementation.
}
}