BE/JAVA

업캐스팅 (upcasting), 다운캐스팅 (downcasting)

MISU 미수 2023. 5. 6. 21:20

 

🤷‍♀️ 업캐스팅 (upcasting)

⭐ 서브 클래스 객체를 슈퍼 클래스 타입으로 타입 변환

s (서브클래스)를 p (슈퍼클래스)로 형변환 해준 예시입니다.

따라서 업캐스팅은 자동형변환입니다.

 

주의할 점은 업캐스팅된 레퍼런스는 객체 내에 슈퍼 클래스의 멤버만 접근 가능하다는 점입니다.

 

업캐스팅의 사례입니다.

이처럼 업캐스팅을 하게 되면 메모리를 절약하여 코드의 효율성이 높아집니다.

만약, 업캐스팅을 하지 않게 된다면 

이렇게 두개의 인스턴스가 생성되어 비효율적인 메모리가 생기게 됩니다.

 


🤷‍♀️ 다운캐스팅 (downcasting)

⭐ 슈퍼클래스 객체를 서브 클래스 타입으로 변환

⭐ 명시적(강제) 타입 변환 필요

 

 

다운캐스팅시 주의할 점은 업캐스팅된 객체만 다운캐스팅을 할 수 있다는 점입니다!!

 

다운캐스팅을 하는 이유는 하위클래스의 정보를 담을 수 있는 객체의 상위클래스로 전환 되어 있는 것을 다시 원래 상태로 되돌리기 위합입니다.

 

따라서, 다운캐스팅은 업캐스팅 된 객체를 원상태로 되돌리기 위해 사용되는 것입니다!!