我有以下 4 个课程:
public abstract class Base
{
abstract public void DoIt();
}
public class TW: Base {}
public class RW: TW
{
public override void DoIt() {}
}
public class IW: TW
{
public override void DoIt() {}
}
Run Code Online (Sandbox Code Playgroud)
用法:
var transaction = new TW();
transaction.DoIt();
Run Code Online (Sandbox Code Playgroud)
我不清楚为什么会出现以下错误:
错误 CS0534 'TW' 没有实现继承的抽象成员 'Base.DoIt()'
如果所有“叶子”派生类(RW 和 IW)都覆盖它,为什么(TW)还需要覆盖它?我可能会遗漏一些东西,因为我记得这不是必须的。我不想在 TW 中覆盖它,因为我没有任何有效的实现可以在那里编写。
我期待有能力写出类似的东西:
public override abstract void DoIt();
Run Code Online (Sandbox Code Playgroud)
什么是正确的实现?
更新:
根据我得到的答案,由于某些限制,我必须按以下方式实施它:
public override void DoIt()
{
//Not getting to this code, it is overriden by the derived classes
}
Run Code Online (Sandbox Code Playgroud)
可以接受吗?如果我遇到这种情况,我觉得架构中的某些东西可能是错误的。
你也必须让 TW 成为一个抽象类。
public abstract class Base
{
public abstract void DoIt();
}
public abstract class TW: Base {}
public class RW: TW
{
public override void DoIt() {}
}
public class IW: TW
{
public override void DoIt() {}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6376 次 |
| 最近记录: |