抽象类孙子继承

Sam*_*nka 2 c# inheritance class abstract

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

  • 实体
    • 特点
      • 玩家
      • 敌人
    • 静止的
      • 楼梯
      • 其他遭遇

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

现在为了获得正确的类型,我在所有类中设置了一个虚拟方法来返回它们的确切类型。这在Entity.csCharacter.cs中都是抽象的。但正如预期的那样,继承一个抽象方法并再次使其抽象并没有多大好处。

因此,我的问题是,是否有任何类型的“正确”实现,或者是否有一些简单的解决方法?我总是可以跳过Entity.cs中的方法并在Character.csStatic.cs中创建两个不同的方法,但这似乎太......乡下人了。

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

Joh*_*ica 6

假设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"; } }
}
Run Code Online (Sandbox Code Playgroud)

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

在线尝试一下