我正在尝试创建一个(不太笨拙的)小游戏,但遇到了问题。 我有一个如下的类树:
现在,我打算实现一个生成器,该生成器应基于一些简单的启发式方法生成一个地图,并通过Entity构造函数将遭遇添加到某些Tiles中。为此,我选择在Tile构造器中使用“ Entity e ”参数。
现在要获取正确的类型,我在所有类中都设置了一个虚拟方法以返回其确切类型。在 Entity.cs 和 Character.cs 中都是抽象的。但是,正如预期的那样,继承一个抽象方法并使其再次变得抽象并没有多大好处。
因此,我的问题是,是否存在任何类型的“正确”实现,还是仅存在一些简单的解决方法?我总是可以只跳过 Entity.cs 中的方法,并在 Character.cs 和 Static.cs 中创建两个不同的方法,但这似乎太...乡下人了。
TL; DR:如何在未声明子级的情况下继承子级的抽象方法。
答案 0 :(得分:1)
假设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
。