예제 8월 27일 객체간의 형변환
2009. 8. 27. 15:38
기본 데이터 타입(primitive type)간의 형변환은 큰 타입이 작은 타입을 포함하는 개념인 반면, 객체 참조 변수(reference type)간의 형변환은 부모클래스와 자식 클래스간의 상속 관계가 전제가 되었을 경우 자식클래스를 객체로 생성하면, 자식 클래스 타입의 참조변수를 부모 클래스 타입으로 형변환이 가능하며, 그 반대도 가능해진다.
package net.jeonsam.examples; public class Animal { public String name; public String toString() { return name; } }
package net.jeonsam.examples; public class Duck extends Animal { public String name; public void fly() { System.out.println("파닥파닥!!"); } }
package net.jeonsam.examples; public class Dog extends Animal { public String name; public void bark() { System.out.println("멍멍!!"); } }
package net.jeonsam.examples; public class InheriTest { /** * @param args */ public static void main(String[] args) { Dog2 dog = new Dog2(); Animal2 duck = new Duck(); Animal2 animal = new Animal2(); dog.name = "바둑이"; duck.name = "도날드 덕"; animal.name = "짐승!"; System.out.println(dog.name); System.out.println(duck.name); // 자식클래스를 부모클래스로 형변환 가능 System.out.println(((Animal2)dog).name); // 원래 자식클래스로 되돌림 System.out.println(((Duck)duck).name); // 부모클래스를 자식클래스로 형변환 System.out.println(((Duck)animal).name); // Runtime Exception 클래스간 형변환 오류!! } }