2012년 10월 17일 수요일

OCJP 문제풀이 - Question 21


QUESTION 21
Given:

abstract class Vehicle { public int speed() { return 0; }
class Car extends Vehicle { public int speed() { return 60; }
class RaceCar extends Car { public int speed() { return 150; } ...

RaceCar racer = new RaceCar();
Car car = new RaceCar();
Vehicle vehicle = new RaceCar();
System.out.println(racer.speed() + ", " + car.speed() + ", "+
  vehicle.speed());

What is the result?

A. 0, 0, 0
B. 150, 60, 0
C. Compilation fails.
D. 150, 150, 150
E. An exception is thrown at runtime.

Answer: D
Section: All

Explanation/Reference:

racer, car, vehicle 는 RaceCar의 인스턴스가 자신의 부모클래스에 담겨있는 형태이다.
이때 호출한 메소드가 오버라이드되어있다면, 실제 자신의 인스턴스의 메소드를 호출하게된다.

블로그 보관함