instanceof 는 언제 사용 할까?

변수가 참조하는 인스턴스의 타입을 확인하고 싶을때 사용한다

쉽게 이야기해서 오른쪽에 있는 타입에 왼쪽에 있는 인스턴스의 타입이 들어갈 수 있는지 대입해보면 된다. 대입이 가능하면 true , 불가능하면 false 가 된다

(부모는 자식에 대입 불가능. 자식은 부모에 대입가능)

<aside> 💡 <포인트>

Child instanceof Parent //부모는 자식을 담을 수 있다. true

Parent instanceof Child //자식은 부모를 담을 수 없다. false

같은타입 true

</aside>

사용 예제

package poly.basic;

public class CastingMain5 {
    public static void main(String[] args) {
    
    Parent parent1 = new Parent();
    System.out.println("parent1 호출");
    call(parent1);
 
    Parent parent2 = new Child();
    System.out.println("parent2 호출");
    call(parent2);
   }
   
 private static void call(Parent parent) {
   parent.parentMethod();
   if (parent instanceof Child) { //parent1이 들어왔을경우, new Parent();즉, 부모자신을 참조 false =>코드실행 x
     System.out.println("Child 인스턴스 맞음");
     Child child = (Child) parent;
     child.childMethod();
   }
 
 }
}
package poly.basic;
public class Parent {
   public void parentMethod() {
    System.out.println("Parent.parentMethod");
   }
}
package poly.basic;
public class Child extends Parent {
   public void childMethod() {
   System.out.println("Child.childMethod");
   }
}

<실행 결과>

parent1 호출 Parent.parentMethod parent2 호출 Parent.parentMethod Child 인스턴스 맞음 Child.childMethod