我有一个基类名为CollidableObject
和一个名为Player
,Enemy
,InertObject
夫妇继承类等迭代通过基类的所有实例和继承的类
我试图找到一个简单的方法来遍历通过它们的所有实例,所以我最初创建了一个类型为CollidableObject
的列表,并将所有继承类的实例放在那里。
的事情是,由于多态的性质,当我做了以下
foreach (CollidableObject CollidableObject in collidableObjects)
{
if (CollidableObject is Player)
{
CollidableObject.Draw(spriteBatch, testPlayerTexture);
}
// Then the same prodedure for each type of CollidableObject.
// Might change to switch or something.
}
它调用从CollidbaleObject
基地,而不是从覆盖/新通用Draw方法抽签方法Player/Enemy/inertObject类。
我该如何解决这个问题。有没有办法从同一棵树中迭代对象集合,但保持它们的继承类型?
我意识到这是辅助性的,但如果您必须为每种子类型提供不同的参数方法,那么这种方法就会失败。无论如何,请查看关于覆盖方法的文章;你应该有一个虚拟的方法,并使用覆盖关键字来覆盖它:http://msdn.microsoft.com/en-us/library/ebca9ah3.aspx – Casey
*“不是覆盖/从播放器/敌人/惰性对象新的类。“* - 哪一个,重写或新? – Harrison