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

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

문제

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

Java
interface Drawable { String name = "Drawable"; default String getName() { return "Interface"; } void draw(); } abstract class Figure implements Drawable { String name = "Figure"; abstract void draw(); String getName() { return name; } } class Circle extends Figure { String name = "Circle"; void draw() { System.out.print("Drawing "); } String getName() { return super.name + name; } } public class Main { public static void main(String[] args) { Drawable d = new Circle(); d.draw(); System.out.println(d.name + " " + d.getName()); } }

정답

Drawing Drawable FigureCircle

Drawing Drawable FigureCircleDrawingDrawableFigureCircle

해설

  1. d.draw() 호출: Circle 클래스의 draw() 메서드가 동적 바인딩으로 실행되어 'Drawing ' 출력
  2. d.name: 인터페이스 필드는 정적 바인딩되어 'Drawable' 출력
  3. d.getName(): Circle 클래스의 getName() 메서드가 동적 바인딩으로 실행
  4. super.name은 Figure 클래스의 name 필드 'Figure'를 참조
  5. this.name은 Circle 클래스의 name 필드 'Circle'을 참조
  6. 따라서 'Figure' + 'Circle' = 'FigureCircle' 반환 최종 출력: 'Drawing Drawable FigureCircle'

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

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