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

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

문제

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

Java
abstract class Vehicle { String name = "Vehicle"; abstract int speed(); String getName() { return name; } } class Bike extends Vehicle { String name = "Bike"; int velocity; Bike(int v) { this.velocity = v; } int speed() { return velocity * 2; } String getName() { return name; } } public class Main { public static void main(String[] args) { Vehicle v = new Bike(15); System.out.println(v.name + " " + v.getName() + " " + v.speed()); } }

정답

Vehicle Bike 30

Vehicle Bike 30VehicleBike30

해설

필드 name은 정적 바인딩으로 선언 타입인 Vehicle의 필드 값 'Vehicle'을 참조합니다. 메서드 getName()과 speed()는 동적 바인딩으로 실제 객체인 Bike 클래스의 오버라이딩된 메서드가 호출됩니다. getName()은 Bike의 name 필드 'Bike'를 반환하고, speed()는 velocity * 2 = 15 * 2 = 30을 반환합니다.

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

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

[정보처리기사 실기] Java - 추상클래스 동적 디스패치 Java 기출 #444 | sqldpass