【发布时间】:2014-11-17 14:46:55
【问题描述】:
Projectiles 是Projectile 的arrayList。
Projectile 有几个子类,例如 Laser。
这里我试图将一个 Projectile 传递给另一个函数。
void checkProjectiles() {
for (int index=0; index<Projectiles.size (); index++) {
if (sq(Projectiles.get(index).xPos - posX) + sq(Projectiles.get(index).yPos - posY) < sq(size)) { //if within the a circle radius of size from centre of roid
Projectile checkProjectile = Projectiles.get(index);
collision(checkProjectile);
}
}
}
我的问题是,当将Laser 的实例传递给此函数时,它没有转到collision(Laser laser),而是转到collision(Projectile projectile)。
如何让对象作为其特定子类的实例传递?
【问题讨论】:
-
你能不能有一个基类的碰撞方法并在子类中覆盖它。这样你传入的任何子类对象都会调用对应的碰撞方法
-
@dragon66 这就是我真正想做的事情。但我将其作为课堂作业进行,讲师坚持我们使用重载方法来处理此事件。他告诉我要查找“访客困境”
-
无论如何,当您要为其添加更多子类类型时,建议的答案方式将是一场维护噩梦。
标签: java class processing