摘要class孙辈继承

Abstract class grandchildren inheritance

我正在尝试创建一个(相当笨拙的)小游戏,但遇到了一个问题。 我有一个 class 树如下:

现在我打算实现一个生成器,它应该根据一些简单的启发式方法生成地图,并通过实体构造函数将遭遇添加到一些 Tiles 中。为此,我选择在我的 Tile 构造函数中使用“Entity e”参数。

现在,为了获得正确的类型,我在所有 classes 中设置了一个虚拟方法,以 return 它们的确切类型。这在 Entity.csCharacter.cs 中都是抽象的。不过果然,继承一个抽象方法,再抽象一次,并没有多大用处

因此,我的问题是,是否有任何类型的 "correct" 实施或只是一些简单的解决方法?我总是可以跳过 Entity.cs 中的方法,并在 Character.cs 中创建两个不同的方法Static.cs,但这似乎太……乡巴佬了。

TL;DR: 如何在子代中继承抽象方法而不在子代中声明。

假设Character是抽象的,你根本不必在Character中实现它。看这个例子:

public abstract class Parent
{
    public abstract string Name {get;}
}

public abstract class Child : Parent
{

}

public class Grandchild: Child
{
    public override string Name { get { return "Test"; } }
}

因为Child也是抽象的,你不需要重新声明任何方法为abstract,所以它只是将实现要求传递给Grandchild

Try it online