C#抽象方法无意中继承和隐藏方法

C# Abstract Method Inheritance and Hiding Methods Unintentionally

我有个问题是关于不小心隐藏了抽象方法。

我正在创建一个基本的实体类作为接口,从中创建我正在开发的游戏中的所有其他实体。

从这个实体类,我创建了几个派生类。有动作,扳机,门等等。这些儿童班中的许多班也有从中衍生出来的孩子。例如,movingentity的子级是抛射和enemyUnit。

在我的基本实体类中,我有一些抽象的方法,比如update()和render(),因为我希望每个实体都实现这些方法。

然而,一旦我进入第二个层次,那就是我的问题所在。例如,我将使用触发器类。触发器从基本实体类派生,但触发器仍有自己的子级(如triggerRespawn和triggerLimitedLifetime)。我不想实例化一个触发器对象,所以我可以保持类的抽象性-我只从触发器的子类创建对象。但是我该如何处理触发器应该从实体实现的抽象方法呢?

我想我基本上可以在触发器中使用与在实体中相同的代码。声明相同的方法、相同的名称、相同的参数,并将其称为抽象的。然后,触发器的子级将被强制实现实际的函数。

但是,这不起作用,因为在触发器类中,我的构建错误表明我正在从基本实体类中隐藏抽象方法。

我怎样才能放弃强迫最终的孩子实现这些抽象方法的想法,而不让所有的父母在这两者之间实现它们呢?我是否需要在第一轮儿童课程中使用虚拟?

到目前为止,我还没有找到一个很好的答案,所以我决定分头问问。提前谢谢,伙计们。


只需根本不要重新声明这些方法——最终的具体类将必须实现树上仍然没有实现的所有抽象方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public abstract class Foo
{
    public abstract int M();
}

public abstract class Bar : Foo
{
    // Concrete methods can call M() in here
}

public class Baz : Bar
{
    public override int M() { return 0; }
}