Zen*_*tzi -1 c# methods abstract
我在这里找到了与我的问题类似的链接,但我似乎仍然无法理解某些内容。
public abstract class ClassA
{
protected abstract void Method()
{
//some logic here
}
}
public class ClassB : ClassA
{
protected override void Method()
{
base.Method();
// some custom logic here
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的情况,我似乎无法找出为什么我无法base.Method()
从 ClassB 中的重写方法调用。错误说:“无法调用抽象基方法”。如果我不能调用它,为什么用逻辑填充和抽象基方法的功能甚至在那里?请有人向我解释我犯了什么错误,我该如何解决?
从 C# 规范:
抽象方法是没有实现的虚方法。抽象方法是用抽象修饰符声明的,并且只允许在同样声明为抽象的类中使用。在每个非抽象派生类中都必须覆盖抽象方法。
所以抽象方法无法实现。因此抽象方法不能有一个主体:
protected abstract void Method();
Run Code Online (Sandbox Code Playgroud)
如果要在基类中使用一些默认逻辑,则必须声明方法virtual
:
protected virtual void Method()
{
//some logic here
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4214 次 |
最近记录: |