Projectiles
是Projectile
的数组列表。
有几个Projectile
子类,如Laser
。
在这里我试图将一个弹丸传递给另一个功能。
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)
。
如何让对象作为其特定子类的实例传递?
答案 0 :(得分:1)
你遇到的问题是,就程序而言,Projectiles中的所有东西都只能被解析为一个子弹,而不是它的任何子类。有几种方法可以解决这个问题,但我认为最简单的方法是在碰撞中处理它。期望交出一个Projectile类型的对象,并使用instanceof方法将其拆分出来。
有关具有类类型的比较运算符的示例,请参阅此答案。 Check if an object belongs to a class in Java
你应该阅读多态性和接口之类的东西,它们也很有用。