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

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

문제

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

Java
interface Calculator { int BASE = 10; default int multiply(int x) { return x * BASE; } } interface Advanced extends Calculator { int BASE = 100; default int multiply(int x) { return x * BASE + 5; } } class MyCalc implements Advanced { int BASE = 1000; public int multiply(int x) { return x * BASE; } } public class Main { public static void main(String[] args) { Calculator c = new MyCalc(); Advanced a = new MyCalc(); System.out.println(c.BASE + " " + a.BASE + " " + c.multiply(2)); } }

정답

10 100 2000

10100200010 100 2000

해설

인터페이스 필드는 static final이므로 정적 바인딩됩니다. c.BASE는 Calculator의 10, a.BASE는 Advanced의 100을 참조합니다. 메서드는 동적 디스패치로 MyCalc의 multiply가 호출되어 2 * 1000 = 2000이 반환됩니다. 인터페이스의 상수는 컴파일 타임에 결정되지만, 클래스 필드와 메서드는 런타임에 실제 객체 타입에 따라 결정됩니다.

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

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