편집 기록

편집 기록
  • 프로필 편집요청빌런님의 편집
    날짜2022.06.07

    Java 예제 풀이 질문


    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였습니다.

    그렇다면

    1. obj는 Z로 동적 바인딩이 되지 않은 것인지
    2. 그렇다면 어떻게 Y 클래스의 f( )가 호출된
    3. obj.g( )는 왜 X클래스의 값이 나온 것인지
    4. X obj = new Z( );를 어떻게 해석해야 하는지에 대하여 알고 싶습니다.
  • 프로필 Hin님의 편집
    날짜2022.06.03

    Java 예제 풀이 질문


    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였습니다.

    그렇다면

    1. obj는 Z로 동적 바인딩이 되지 않은 것인지
    2. 그렇다면 어떻게 Y 클래스의 f( )가 호출된
    3. obj.g( )는 왜 X클래스의 값이 나온 것인지
    4. X obj = new Z( );를 어떻게 해석해야 하는지에 대하여 알고 싶습니다.