另一个“不继承抽象成员”

本文关键字:成员 抽象 继承 另一个 | 更新日期: 2023-09-27 18:16:09

我遇到了一个愚蠢的c#问题。但是请记住,我要从Java转到c# (尽管我期望重写方法相当容易)

我现在有两个类,基类GameState和子类GameStateMenu

GameState类

namespace Bejeweled.State
{
    abstract class GameState
    {
        private bool visible;
        public abstract void Update();
        public abstract void Draw();
// More code is hidden down here.

和我的GameStateMenu类

namespace Bejeweled.State
{
    class GameStateMenu : GameState
    {
        public override void Update()
        {
        }
        public override void Draw()
        {
        }
    }
}
现在,我无法让GameStateMenu停止抱怨以下内容:

Bejeweled.State。GameStateMenu'没有实现继承的抽象成员'Bejeweled.State.GameState.Update()'

我一直在疯狂地搜索,最接近我的问题的资源是这个,但它仍然没有帮助。

我还在做一些我没有发现的错误吗?Visual Studio毫无理由地抱怨吗?

为这个愚蠢的小错误感到抱歉;如有任何帮助,不胜感激。

另一个“不继承抽象成员”

抽象类的所有抽象方法都应该被重写,所以你应该在派生类中重写Draw(),就像这样

abstract class GameState
{
    private bool visible;
    public abstract void Update();
    public abstract void Draw();
}
class GameStateMenu : GameState
{
    public override void Update()
    {
    }
    public override void Draw()
    {
    }
}

如果你真的不想让Draw()方法被重写,你可以从GemState基类中的Draw()方法中删除抽象前缀,并提供这样的默认实现。

abstract class GameState
{
    private bool visible;
    public abstract void Update();
    public void Draw() 
    { 
    }
}
class GameStateMenu : GameState
{
    public override void Update()
    {
    }
}

正如Lasse V. Karlsen所建议的,这只是编译器的愚蠢,没有检查自己。运行验证了这个完全不必要的错误。

我为不必要的时间浪费道歉。