다음 Java 프로그램이 출력하는 번호를 순서대로 쓰시오.
class Parent {
Parent(int a, int b) { System.out.print("① " ); }
void getT() { System.out.print("②"); }
}
class Child extends Parent {
Child(int x) {
super(x + 1, x);
System.out.print("③ " );
}
void getT(int value) { System.out.print("④"); }
}
public class Main {
public static void main(String[] args) {
System.out.print("⑤ " );
Parent p = new Child(3);
System.out.print("⑥ " );
p.getT();
}
}모범답안
⑤ ① ③ ⑥ ②
풀이와 판단 근거
main이 먼저 ⑤를 출력한다. new Child(3)는 자식 생성자 본문보다 부모 생성자 super(...)를 먼저 실행하므로 ①이 출력되고, 부모 생성자가 끝난 뒤 Child 생성자 본문에서 ③이 출력된다.
객체 생성이 끝나면 ⑥을 출력한다. Child의 getT(int)는 Parent의 getT()와 매개변수가 달라 오버로딩일 뿐 오버라이딩이 아니므로 p.getT()는 ②를 출력한다.
최종 순서는 ⑤ ① ③ ⑥ ②다.
자주 틀리는 지점
- 자식 생성자 본문 ③이 부모 생성자 ①보다 먼저 실행된다고 판단함
- getT(int)를 getT()의 오버라이딩으로 오해해 ④가 출력된다고 답함
- 참조 변수 타입과 실제 객체 타입만 보고 메서드 시그니처 차이를 확인하지 않음
자동 판정 방식
한글·영문 동의어와 문항별 필수 개념을 확인하며, 정답 단어가 부정되거나 반대 개념과 함께 쓰이면 자동 정답으로 확정하지 않습니다. 부분점수는 ITPASSLAB의 학습용 예상 점수입니다.