instanceof와 형변환

0
  • 참조 변수의 형변환 가능여부를 확인하는데 사용. 가능하면 true 반환
  • 형변환 전에 반드시 instanceof로 확인해야 함.
void doWork(Car c)
	if (c instanceof FireEngine) {  // 1. 형변환이 가능한지 확인
    	FireEngine fe = (FireEngine)c;  // 2. 형변환
        fe.water();
  • 변수 instanceof 본객체의조상 ; true.
    자기 자신 & 조상도 참으로 나옴. → 조상으로도 형변환이 가능하다.

형변환을 하는 이유?

  • 인스턴스의 원래 기능을 모두 사용하려고.
  • Car타입의 리모콘인 c로는 water()를 호출할 수 없으니까.
    리모콘을 FireEngine 타입으로 바꿔서 water()를 호출
    (water()메소드는 원래 FireEngine클래스에 위치)
    참조변수(리모콘)을 변경함으로써 사용할 수 있는 멤버의 갯수를 조절하기 위해서

참조변수의 형변환을 했다고해서, 객체가 바뀌는 것은 아님!! 참조변수값, 객체 그대로. 그저 타입만 변경

출처

  • 자바의 정석 기초편 - youtube, ch7 - 27,28
profile
백엔드를 공부하고 있습니다.

0개의 댓글