12. JAVA의 UpCasting(업캐스팅), DownCasting(다운캐스팅), instanceof
캐스팅(casting)이란 타입을 변환하는 것을 말하며 형변환이라고도 합니다.
자바의 상속 관계에 있는 부모와 자식 클래스 간에는 서로 간의 형변환이 가능합니다.
※모든 자식은 부모 타입이다.
Casting을 사용하는 이유
모든 자식 값을 전달 받기 위해서는 동일한 타입의 저장공간으로 받아야 합니다.
하지만 자식끼리는 서로 타입이 다르기 때문에 한 번에 전달받을 수가 없습니다.
이 때 up casting을 사용하면, 모든 자식이 부모 타입이므로 하나의 저장공간에 모든 자식을 받을 수 있게 됩니다.
만약 up casting으로 자식 값을 전달 받았다면, 자식에서 새롭게 구현한 기능들은 사용할 수 없기 때문에
down casting을 통해서 복구 하고 사용합니다.
UpCasting(업캐스팅)
업캐스팅(Upcasting)이란 자식타입의 객체가 부모 클래스 타입으로 형변환되는 것을 말합니다.
즉, 부모 클래스 레퍼런스 변수가 자식 클래스로 객체화된 인스턴스를 가리킬 수 있게 됩니다.
Car 클래스가 있고 Car(부모) 클래스를 상속받은 SuperCar(자식) 클래스가 있습니다.
자식타입(SuperCar 클래스)의 객체를 부모(Car 클래스)타입 으로 형변환을 한 것입니다.
DownCasting(다운캐스팅)
자신의 고유한 특성을 잃은 서브 클래스의 객체를 다시 복구 시켜주는 것을 말합니다.
그러니까 up casting된 객체를 자식 타입으로 형변환하는 것을 말합니다.
여기서 업캐스팅과 다른 점은 명시적으로 타입을 지정해야 한다는 점입니다.
그리고 업캐스팅이 선행이 되어야 합니다.
다운캐스팅을 하면서 형변환할 대상을 지정했지만 무분별한 다운캐스팅은 컴파일 시점에는 오류가 발생하지 않아도 런타임 오류를 발생시킬 가능성이 있다.
Instanceof 연산자
객체의 타입을 구분하기 위해 instanceof 연산자를 사용할 수 있습니다.
a instanceof A : 참 또는 거짓, 둘 중 하나의 값
- a가 A타입이면 true
- a가 A타입이 아니면 false
이상으로 타입형 변환, instanceof연산자에 대해 알아보았습니다.
'KoreaIt Academy > JAVA' 카테고리의 다른 글
14. JAVA의 인터페이스(Interface), Adapter, 마커인터페이스, 모호성 (0) | 2021.07.19 |
---|---|
13. JAVA의 추상클래스(abstract class) (0) | 2021.07.19 |
11. JAVA의 접근 제한자 (0) | 2021.07.18 |
10. JAVA의 상속(Inheritance), 오버라이딩(Overriding) (0) | 2021.07.18 |
9. JAVA의 클래스(Class) , 싱글턴(Singleton) (0) | 2021.07.14 |
댓글