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

本文关键字:基类 方法 继承 | 更新日期: 2023-09-27 18:05:22

所以我在任何地方都找不到答案。我有一个实体类,我从中创建游戏中的所有角色。例如:Player继承了Entity.

现在我想做的是,从实体类中调用Player中的"Update"方法。这可能吗?因为我需要对我现在创建的每个新实体类型都这样做:

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

提前感谢!

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

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

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

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

如果你想避免动态向下转换,你也可以考虑使用访问者模式

在子类中重写Update()方法。然后,对遇到的任何实体调用entity.Update()。这就是所谓的多态性