정보처리기사 실기JavaJava - 추상클래스와 인터페이스난이도 5SHORT_ANSWER

정보처리기사 실기 Java - 추상클래스와 인터페이스 기출문제 #290

문제

다음 Java 코드의 실행 결과를 쓰시오.

Java
interface A { int val = 10; default int getValue() { return val * 2; } } interface B { int val = 20; default int getValue() { return val * 3; } } abstract class Base implements A, B { int val = 30; public int getValue() { return A.super.getValue() + this.val; } abstract void process(); } class Derived extends Base { int val = 40; void process() { System.out.print(val + " "); } public int getValue() { return super.getValue() + B.val; } } public class Main { public static void main(String[] args) { Base b = new Derived(); b.process(); System.out.println(b.val + " " + b.getValue()); } }

정답

40 30 70

40 30 70403070

해설

  1. b.process() 호출: Derived 클래스의 process() 메서드가 동적 바인딩으로 실행되어 Derived의 val 필드 40 출력
  2. b.val: 필드는 정적 바인딩되어 Base 클래스의 val 필드 30 출력
  3. b.getValue() 호출: Derived 클래스의 getValue() 메서드가 동적 바인딩으로 실행
  4. super.getValue()는 Base의 getValue() 호출: A.super.getValue() + this.val = (10*2) + 30 = 50
  5. B.val은 인터페이스 B의 상수 20
  6. 따라서 50 + 20 = 70 반환 최종 출력: '40 30 70'

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

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