쉽게 이해하기
Vehicle v = new Car();에서 Vehicle은 손잡이의 설명서이고 Car는 실제 자동차입니다. v.run()은 자동차가 구현한 동작을 실행합니다. 같은 이름의 부모 메서드를 자식이 다시 구현하면 실제 자식 객체의 메서드가 선택됩니다. extends는 부모의 기능을 물려받는다는 뜻입니다.
눈으로 따라가기
Vehicle v = new Car();
참조변수 선언 타입
v.value → Vehicle의 필드
Vehicle 타입에 선언된 필드를 컴파일 시 선택합니다.
실제 객체
v.run() → Car의 메서드
같은 시그니처로 재정의한 인스턴스 메서드를 실행 시 선택합니다.
Vehicle 참조 → Car 객체 → Car.run()
class Vehicle { int move(int n) { return n + 1; } }
class Car extends Vehicle { @Override int move(int n) { return 2 * n + 1; } }
public class Main {
public static void main(String[] args) {
Vehicle v = new Car();
System.out.print(v.move(2));
}
}시험 함정
오버로딩과 다릅니다. 이름과 매개변수 형태가 같은 인스턴스 메서드를 재정의해야 합니다.
함께 보는 관련 주제
비슷한 개념의 핵심과 함정을 이 페이지에서 비교합니다.
즉시 문제 · 6개
정답을 제출하면 해설과 관련 개념을 확인합니다. 틀린 문제는 자동으로 오답노트에 저장됩니다.
즉시 3문제관련 문제 전체검증 근거
기술 문서/실행 검증 · 마지막 검증 2026-09-27 · 핵심 코드 추적 유형 · 공식 출제 횟수 집계 없음