c23 [Java] 업캐스팅, 다운캐스팅
본문 바로가기
[Java]

[Java] 업캐스팅, 다운캐스팅

by Jarvis2304 2022. 12. 31.

▶ 업캐스팅 (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

댓글