Java
업캐스팅과 다운캐스팅
openDatabase
2016. 4. 29. 14:57
레퍼런스형 변수 자식은 부모가 될수있다 – 업캐스팅
부모는 자식이 될수 없으므로 강제적으로 형변환 해줘야함
Parent p = new Child(); // 업캐스팅을 한후
Child c =(Child)p // 다운캐스팅을 해야한다.
이를 다운캐스팅이라한다.
참고로 레퍼런스 변수들 사이의 형변환은 상속관계에서만 가능하다.
다운캐스팅
- 서브클래스로 형변환하는 것이다.
- 참조 가능한 영역이 확대된다.
- 컴파일러에 의해서 자동으로 형변환되지 않는다.
- 명시적으로 캐스팅을 해주어야한다.
- 실행시 예외사항이 발생할 수있으므로 인스턴스의 클래스 형과 참조하는 레퍼런스 변수의 상속 관계를 생각해서 명시적 캐스팅을 해야한다. (이전에 이미 업캐스팅이 된 레퍼런스 값을 다운캐스팅 하는 경우에만 안전하다.)