Projectiles
은 Projectile
의 arrayList입니다. 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);
}
}
}
내 문제는 대신 collision(Laser laser)
에가는,이 기능에 Laser
의 인스턴스를 전달할 때 대신 collision(Projectile projectile)
로 이동한다는 것입니다. 객체를 특정 하위 클래스의 인스턴스로 전달하려면 어떻게해야합니까?
기본 클래스에 대한 충돌 메서드를 갖고 하위 클래스에서 재정의 할 수 있습니까? 이 방법은 당신이 전달한 하위 클래스 객체가 해당 충돌 메서드를 호출합니다. – dragon66
@ dragon66 이것은 실제로 내가 좋아했을 것입니다. 그러나 이것을 수업 과제로 지정하고 강사는이 이벤트를 처리하기 위해 오버로드 된 메서드를 사용해야한다고 주장했습니다. 그는 저에게 '방문자의 딜레마'를 찾아 보라고 말했습니다. – Andrew
어쨌든, 더 많은 하위 클래스 유형을 추가 할 때 대답이 제시 한 방법은 유지 보수의 악몽이 될 것입니다. – dragon66