정보처리기사 실기JavaJava 상속난이도 5MCQ

정보처리기사 실기 Java 상속 기출문제 #3873

문제

다음 Java 코드의 출력 결과로 가장 적절한 것은?

Java
public class Main { public static void main(String[] args) { new Child(); System.out.println(Parent.total); } } class Parent { static int total = 0; int v = 1; public Parent() { total += (++v); show(); } public void show() { total += total; } } class Child extends Parent { int v = 10; public Child() { v += 2; total += v++; show(); } @Override public void show() { total += total * 2; } }

① 54 ② 18 ③ 36 ④ 72

정답

1

해설

정답: 1. Parent 생성자에서 Parent의 v가 1에서 2가 되어 total은 2가 된다. 생성자 안의 show()는 동적 바인딩으로 Child의 show()가 호출되어 total은 6이 된다. 이후 Child 필드 v가 10으로 초기화되고 Child 생성자에서 v += 2로 12가 된 뒤 total에 12를 더해 18이 된다. 마지막 show()로 total은 54가 된다.

오답 풀이

  • 1번: 생성자 호출 순서와 오버라이딩 메서드 호출을 올바르게 반영했다.
  • 2번: 마지막 show 호출을 누락한 값이다.
  • 3번: show의 계산식을 잘못 적용한 값이다.
  • 4번: total 누적 과정을 과대 계산한 값이다.

보충 개념 Java 생성자 실행 중에도 오버라이딩된 메서드는 동적 바인딩으로 자식 클래스 메서드가 호출될 수 있다. 이 경우 필드 초기화 순서에 주의해야 한다.

정보처리기사 실기 시험 준비 가이드

이런 문제 20~50개를 한 번에 풀어보세요

매번 새로 추가되는 모의고사 + 오답 자동 복습 + 회차별 실력 추적. 회원가입 후 무료 이용.

[정보처리기사 실기] Java 상속 Java 기출 #3873 | 문어CBT