JAVA2009. 11. 21. 13:44
-------------------------------------------------
//Grandfather.java

class Grandfather {
    String name = "할아버지";
}

--------------------------------------------------
//Father.java

class Father extends Grandfather {

    String name = "아버지";

}//class

-----------------------------------------------------
//Son.java

class Son extends Father {
    String name = "아들";
} //class

------------------------------------------------------
//TypeCastingTest.java

class TypeCastingTest {
    public static void main(String[] args) {
       
        Son s1 = new Son();  // ok
        Father f1 = new Father(); // ok
        Grandfather g1 = new Grandfather(); // ok

        System.out.println(s1.name); //아들
        System.out.println(f1.name); //아버지
        System.out.println(g1.name); //할아버지

        //상위형변환(upcasting)
        Father f2 = new Son(); //ok
        Grandfather g2 = new Son(); //ok

        Grandfather g3 = new Father(); //ok

        System.out.println(f2.name); //아버지
        System.out.println(g2.name); //할아버지
        System.out.println(g3.name); //할아버지

       
        //하위형변환(downcasting)
        //Son s2 = new Father(); // x
        //Exception in thread "main" java.lang.ClassCastException: Father cannot be cast to Son
        //at TypeCastingTest.main(TypeCastingTest.java:28)

        //Son s2 = (Son)new Father(); //명시적 타입 변환
        //Father f3 = (Father)new Grandfather();

        // heap / GF /  F / S / 메모리 참조 범위가 하위 타입이 넓다.
        // 하->상  형변환 한것만.
        //System.out.println(s2.name);
        //System.out.println(f3.name);

   
        //하위 형변환
        //하위타입 객체참조변수에 상위타입 객체 참조값을 저장할때는
        //명시적으로 형변환을 해야한다.
        //단, 한번은 하위타입에서 상위타입으로 형변환되었던 것만
        //하위형변환 가능하다.
        Son s5 = new Son();
        Father f5 = s5;
        Son s6 = (Son)f5;
       
        System.out.println(s5.name);
        System.out.println(f5.name);

    }//main
}//class

'JAVA' 카테고리의 다른 글

Scanner를 이용한 입력, StringTokenizer를 이용한 분리  (0) 2009.11.21
scanner example  (0) 2009.11.21
자바 중간고사 정리  (0) 2009.11.21
Java Serialization 직렬화 예제  (0) 2009.11.06
자바의 기본 타입  (0) 2009.11.06
Posted by Tiwaz