▶ 업캐스팅 (up-casting)
- 서브 클래스 객체를, 슈퍼 클래스 타입으로 변환하는 것
- 슈퍼 클래스 래퍼런스로, 서브 클래스 객체를 가리키게 되는 현상
- 서브 클래스의 래퍼런스를 슈퍼 클래스 래퍼런스에 대입
- 캐스팅(casting)이란 타입 변환을 말함
- 이 그림에서 서브 클래스의 객체는 사람
- 슈퍼 클래스 래퍼런스는 생물 래퍼런스
- 생물 래퍼런스(슈퍼 클래스 레퍼런스)가 사람(서브 클래스 객체)을 가리키고 있음
예제) 업캐스팅
※ p는 Person 래퍼런스 이므로, Studnet의 멤버들에 접근하면 오류 발생 ※
▶ 다운캐스팅 (down-casting)
- 슈퍼 클래스 객체를 서브 클래스 타입으로 변환하는 것
- 슈퍼 클래스 레퍼런스를 서브 클래스 레퍼런스에 대입
- 반드시 명시적 타입 변환 지정해야 함
- 업캐스팅된 것을 다시 원래대로 되돌리는 것
예제) 다운캐스팅
▶ 업캐스팅 레퍼런스로 객체 구별
- 업캐스팅된 레퍼런스로는 객체의 실제타입을 구분하기 어려움(슈퍼 클래스는 여러 서브 클래스에 상속되기 때문)
ex) 아래의 클래스 계층 구조에서, p가 가리키는 객체가 Person 객체인지, Student 객체인지, Professer 객체인지 구분하기 어려움
▶ instanceof 연산자
- 레퍼런스가 가리키는 객체의 타입 식별하기위해 사용
▷ instanceof 연산자 사용 사례
예제) instanceof 연산자 활용
'[Java]' 카테고리의 다른 글
[Java] 추상 클래스, 인터페이스 (0) | 2023.01.02 |
---|---|
[Java] 메소드 오버라이딩 (다형성) (0) | 2023.01.01 |
[Java] 상속 (상속성) (0) | 2022.12.30 |
[Java] static, final (0) | 2022.12.29 |
[Java] 접근 지정자 (0) | 2022.12.28 |
댓글