class X {
public void f( ) { System.out.print("1"); }
public static void g() { System.out.print("2"); }
}
class Y extends X{
public void f( ) { System.out.print("3"); }
}
class Z extends Y {
public static void g( ) { System.out.print("4"); }
}
public class num23 {
public static void main(String args[]) {
X obj = new Z( );
obj.f( );
obj.g( );
}
}
obj.f ( ): Z클래스에서의 f( ) 호출, 부모클래스의 f( )호출하여 3 출력
obj.g( ): Z클래스의 g( ) 호출하여 4출력
출력 결과: 34
위와 같은 형식으로 풀었는데 정답은 32였습니다.
그렇다면
- obj는 Z로 동적 바인딩이 되지 않은 것인지
- 그렇다면 어떻게 Y 클래스의 f( )가 호출된
- obj.g( )는 왜 X클래스의 값이 나온 것인지
- X obj = new Z( );를 어떻게 해석해야 하는지에 대하여 알고 싶습니다.