另一个“不继承抽象成员”
本文关键字:成员 抽象 继承 另一个 | 更新日期: 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所建议的,这只是编译器的愚蠢,没有检查自己。运行验证了这个完全不必要的错误。
我为不必要的时间浪费道歉。