C# 抽象类孙子继承

C# 抽象类孙子继承,c#,class,inheritance,abstract,C#,Class,Inheritance,Abstract,我正在尝试创建一个(相当笨拙的)小游戏,我遇到了一个问题。 我有一个类树,如下所示: 实体 性格 玩家 敌人 静止的 楼梯 其他遭遇 现在我打算实现一个生成器,它应该基于一些简单的启发式方法生成一个映射,并通过实体构造函数将遭遇添加到一些分幅中。为此,我选择在我的Tile构造函数中使用“Entity e”参数 现在为了获得正确的类型,我在所有类中设置了一个虚拟方法来返回它们的确切类型。在Entity.cs和Character.cs中都是抽象的。但正如所料,继承抽象方法并使其再次抽

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

  • 实体
    • 性格
      • 玩家
      • 敌人
    • 静止的
      • 楼梯
      • 其他遭遇
现在我打算实现一个生成器,它应该基于一些简单的启发式方法生成一个映射,并通过实体构造函数将遭遇添加到一些分幅中。为此,我选择在我的Tile构造函数中使用“Entity e”参数

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

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


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

假设
字符
是抽象的,您根本不需要在
字符
中实现它。请参见此示例:

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
,因此它只需将实现需求传递给
孙子


假设
字符
是抽象的,您根本不需要在
字符
中实现它。请参见此示例:

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
,因此它只需将实现需求传递给
孙子