문제
다음 Java 코드의 실행 결과를 쓰시오.
Javaabstract class Vehicle { String brand = "Generic"; abstract void start(); void getBrand() { System.out.print(brand); } } class Car extends Vehicle { String brand = "Toyota"; void start() { System.out.print("Engine"); } void getBrand() { System.out.print(brand); } } public class Main { public static void main(String[] args) { Vehicle v = new Car(); v.getBrand(); System.out.print("-"); v.start(); } }
정답
Toyota-Engine
Toyota-Engine
해설
- Vehicle v = new Car()로 Car 객체를 Vehicle 타입으로 참조
- v.getBrand() 호출 → 메서드는 동적 바인딩되어 Car의 getBrand() 실행 → Car의 brand 필드인 "Toyota" 출력
- "-" 출력
- v.start() 호출 → 추상 메서드가 Car에서 구현된 start() 실행 → "Engine" 출력 결과: "Toyota" + "-" + "Engine" = "Toyota-Engine"