정보처리기사 실기JavaJava - 추상클래스 동적 디스패치난이도 2SHORT_ANSWER

정보처리기사 실기 Java - 추상클래스 동적 디스패치 기출문제 #735

문제

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

Java
abstract class Vehicle { String brand = "Generic"; abstract String getEngine(); String getBrand() { return brand; } } class Car extends Vehicle { String brand = "Toyota"; String getEngine() { return "V6"; } String getBrand() { return brand + "-" + getEngine(); } } public class Main { public static void main(String[] args) { Vehicle v = new Car(); System.out.println(v.brand + " " + v.getBrand()); } }

정답

Generic Toyota-V6

Generic Toyota-V6GenericToyota-V6

해설

필드 v.brand는 선언 타입인 Vehicle의 brand 필드를 참조하여 정적 바인딩으로 "Generic"이 출력됩니다. 메서드 v.getBrand()는 실제 객체인 Car의 오버라이딩된 메서드가 동적 디스패치되어 "Toyota-V6"이 출력됩니다. Car의 getBrand() 메서드는 Car 클래스의 brand 필드 "Toyota"와 추상 메서드 getEngine()의 구현체 "V6"를 결합하여 반환합니다.

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

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