참조변수의 형변환

GW·2023년 7월 27일

참조변수의 형변환이란?

  • 사용 할 수 있는 멤버의 갯수를 조절하는 것
  • 조상 자손 관계의 참조변수는 서로 형변환 가능

💎예제💎

아래 그림과 같이 Car, FireEngine,Ambulance가 정의되어 있을 때

  • Car클래스는 FireEngine클래스와 Ambulance클래스의 부모클래스이다.
    하지만 FireEngine클래스와 Ambulance클래스는 형제관계는 아니다.
  • 주의 하자! 두 클래스는 아무런 관계도 없는 것이다.

Car타입의 참조변수와 FireEngine타입의 참조변수,
Car타입의 참조변수와 Ambulance타입의 참조변수는 형변환이 가능하다.

Car car = null;
FireEngine fe = new FireEngine();
FireEngine fe2 = null;

car = fe;
fe2 = (FireEngine)car;
car = fe; 를 보면 형변환이 생략되었다. 자식에서 부모타입으로 업캐스팅 
fe2 = (FireEngine) car; 는 형변환을 생략 불가하다.  부모에서 자식타입으로 다운 캐스팅

✅ 정리

서로 상속관계이 있는 타입간의 형변환은 양방향으로 자유롭게 수행될 수 있으나,
참조변수가 가리키는 인스턴스의 자식타입으로 형변환은 허용되지 않는다.
그래서 참조변수가 가리키는 인스턴스의 타입이 무엇인지 확인하는 것이 중요하다.

instanceof 연산자

  • 참조변수의 형변환 가능여부 확인에 사용. 가능하면 true 반환
  • 형변환 전에 반드시 instaceof로 확인해야함

Q&A

Q.참조변수 형변환은 왜 하는가?

  • A.참조변수를 변경함으로써 사용할 수 있는 멤버의 갯수를 조절하기 위해서

Q.instanceof 연산자는 언제 사용하나요?

  • A.참조변수 형변환하기 전에 형변환 가능여부를 확인할때

0개의 댓글