使用从继承类到基类的方法

时间:2013-03-22 11:05:35

标签: c# inheritance methods call parent

所以我无法在任何地方找到答案。 我有一个实体类,我可以在游戏中创建我的所有角色。例如:玩家继承实体。

现在我想要做的是调用"更新"来自实体类的Player中的方法。这可能吗?因为我需要为我现在创建的每个新实体类型执行此操作:

 foreach (Entity entity in entityList) {
                if (entity is Zombie) {
                    Zombie zombie = (Zombie)entity;
                    zombie.Update();
                }
                //new character here
            }

提前致谢!

2 个答案:

答案 0 :(得分:1)

如果“更新”的概念适用于所有实体,则可以使Update成为Entity的虚拟函数,并让Player覆盖它。然后,在Entity的内部成员函数中,您只需要在特定的Update()对象上调用Entity并动态调度该调用:

foreach (Entity entity in entityList) { entity.Update(); }

如果Update()对所有Entity没有意义,那么将它们作为Entity的虚函数会污染该类的界面,在我看来,你的选择是正确的。

如果您想避免动态向下转播,也可以考虑使用Visitor Pattern

答案 1 :(得分:0)

覆盖子类中的Update()方法。然后,只需为遇到的任何实体调用entity.Update()即可。这就是所谓的多态性。