我有一个愚蠢的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()'
我一直在谷歌搜索疯狂,而我最接近问题的资源是this one,但它仍然无济于事。
我还做错了什么我还没抓到? Visual Studio是否无缘无故抱怨?
抱歉这个愚蠢的小错误;非常感谢任何帮助。
答案 0 :(得分:0)
Abstract类的所有抽象方法都应该被覆盖,所以你应该在派生类中覆盖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()
{
}
}
答案 1 :(得分:0)
正如Lasse V. Karlsen所说,只是编译器是愚蠢的,而不是自我检查。跑步验证了这个绝对没必要的错误。
我为不必要的时间浪费道歉。