문제
다음은 Java 코드에 대한 문제이다. 아래 코드를 확인하여 알맞은 출력값을 작성하시오.
정답
2
2
해설
a는 A 타입 참조변수이지만 실제 객체는 B이다. a.g()는 A 클래스에 정의된 g()를 호출한다. g() 내부의 f("a")는 컴파일 시점에 A 클래스 기준으로 f(Object)를 선택한다. 실행 시점에는 동적 바인딩에 의해 B에서 오버라이딩한 f(Object)가 호출되므로 결과는 2이다. B의 f(String)은 오버로딩 메서드이며 A의 g() 내부 호출 대상이 아니므로 호출되지 않는다.