使用从继承类到基类的方法
本文关键字:基类 方法 继承 | 更新日期: 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()
。这就是所谓的多态性