从超类数组中传递为子类

时间:2014-11-17 14:46:56

标签: java class processing

ProjectilesProjectile的数组列表。 有几个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)。 如何让对象作为其特定子类的实例传递?

1 个答案:

答案 0 :(得分:1)

你遇到的问题是,就程序而言,Projectiles中的所有东西都只能被解析为一个子弹,而不是它的任何子类。有几种方法可以解决这个问题,但我认为最简单的方法是在碰撞中处理它。期望交出一个Projectile类型的对象,并使用instanceof方法将其拆分出来。

有关具有类类型的比较运算符的示例,请参阅此答案。 Check if an object belongs to a class in Java

你应该阅读多态性和接口之类的东西,它们也很有用。