-2
여기에 제가 가지고있는 코드가 있습니다. 가능하다면 덜 clunky 해지고 싶습니다. Soccer와 Basketball은 Player의 하위 클래스입니다. arr [i] .methodName()은 수퍼 클래스의 메서드에서만 작동하며 가능한 경우 같은 방식으로 호출되도록 하위 클래스의 메서드를 원합니다.개체의 배열을 반복하고 개체의 메서드를 호출하려면 어떻게해야합니까?
import java.util.Arrays;
public class PlayerClient {
public static void main(String[] args) {
Soccer s1 = new Soccer("Robert", 12, 200000, 3, 1, 17);
Soccer s2 = new Soccer("Carrot", 7, 400000, 1, 4, 35);
Basketball b1 = new Basketball("Jeremy", 37, 300000, 70, 6.3);
Basketball b2 = new Basketball("Lebron", 65, 1000000, 130, 9.0);
Player[] arr = {s1, s2, b1, b2};
for (int i = 0; i < arr.length; i++) {
System.out.println("\n\n" + arr[i].getName());
System.out.println(arr[i].getNumber());
System.out.println(arr[i].getSalary());
if (arr[i].equals(s1)) {
System.out.println(s1.getYellowFlags());
System.out.println(s1.getRedFlags());
System.out.println(s1.getGoalsScored() + "\n\n");
} else if (arr[i].equals(s2)) {
System.out.println(s2.getYellowFlags());
System.out.println(s2.getRedFlags());
System.out.println(s2.getGoalsScored() + "\n\n");
} else if (arr[i].equals(b1)) {
System.out.println(b1.getjumpHeight());
System.out.println(b1.getjumpHeight() + "\n\n");
} else if (arr[i].equals(b2)) {
System.out.println(b2.getjumpHeight());
System.out.println(b2.getBasketsScored() + "\n\n");
}
}
}
}