다음 Java 프로그램의 출력 결과는?class ClassA { Cla… | [9급 국가직 컴퓨터일반] 26년 1회차 기출문제 상세 페이지
1[9급 국가직 컴퓨터일반] 26년 1회차
다음 Java 프로그램의 출력 결과는?class ClassA {
ClassA() {
System.out.print("1");
}
static {
System.out.print("4");
}
}
public class ClassB extends ClassA {
ClassB() {
System.out.print("2");
}
public static void main(String[] args) {
System.out.print("3");
new ClassB();
}
}1
32
2
432
3
3214
4
4312
해설
출력 결과는 4312이다.
main은 ClassB의 정적 메서드이므로 실행 전에 ClassB가 초기화되고, 그에 앞서 상위 클래스 ClassA의 static 초기화 블록이 실행되어 4가 먼저 출력된다.
이어서 main이 3을 출력하고, new ClassB()에서 묵시적 super()로 ClassA()가 먼저 실행되어 1, 그다음 ClassB() 본문이 2를 출력한다(생성자 실행 순서: 상위 → 하위).
- 출력 32: static 블록과 상위 클래스 생성자의 출력을 모두 빠뜨렸다.
- 출력 432: 상위 생성자가 출력하는 1을 빠뜨렸다.
- 출력 3214: static 블록이 main보다 먼저 실행되고 상위 생성자가 하위 생성자보다 먼저 실행된다는 점을 반영하지 않았다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.