代码之家  ›  专栏  ›  技术社区  ›  Samuel Novelinka

抽象类孙子继承

  •  0
  • Samuel Novelinka  · 技术社区  · 6 年前

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

    • 实体
      • 性格
        • 玩家
        • 敌人
      • 静态
        • 楼梯
        • 其他遭遇

    现在,我打算实现一个生成器,它应该基于一些简单的启发式方法生成一个映射,并通过实体构造函数向一些图块添加遭遇。因为我选择使用” 实体E “我的瓷砖构造中的参数。

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

    因此,我的问题是,是否存在任何类型的“正确”实现,或者只是一些简单的变通方法?我可以跳过这个方法 实体.cs 并在两者中创建两个不同的 字符.cs 静态.cs 但那似乎也是…红领Y。

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   ProgrammingLlama Raveena Sarda    6 年前

    假设 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