자바공부하기 107

upcasting과 downcasting의 실제 구현

 

import java.util.Vector;

 

public class upDownCasting {

public static void main(String[] args) {

String name = new String("홍길동");

Integer id = new Integer(1000);

Vector v = new Vector();

v.addElement(name);

v.addElement(id);

 

//upcasting

Object obj1 = v.elementAt(0);

Object obj1 = v.elementAt(1);

 

//Downcasting

String str = (String)obj1;

Integer num = (Integer)obj2;

System.out.println("이름:" + name + "번호:" +num);

String str2 = (String)v.elementAt(0);

Integer num2 = (Integer)v.elementAt(1);

System.out.println("이름" + name + "번호:" + num);

}

}

 

- Vector는 객체 저장소 / Object형만을 저장할 수 있음

- 저장은 Upcasting / 추출은 Downcasting

 

 

 

 

자바공부하기 106

Downcasting

 

- 하위클래스로의 형 변환

- 상위클래스(Super Class) ->하위클래스(Sub Class)

- 원칙적으로 불가능함 (상위 클래스는 하위 클래스의 서브타입이 아님)

- Downcasting의 기법을 제공

: 명시적인 캐스팅

* 컴파일러에게 지금 이 객체는 타입정보면 볼 때는 서브타입이 아니지만, 실제 메모리에 담긴 놈은 서브타입인 놈이 담겨있을 거니까 에러 발생시키지 말고 그냥 서브타입인 것처럼 쓰라고 지시하는 과정

 

 

 

+ Recent posts