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