다형성에서 참조형 변수는 이름 그대로 다양한 자식을 대상으로 참조할 수 있다. 그런데 참조하는 대상이 다양하기 때문에 어떤 인스턴스를 참조하고 있는지 확인하려면 어떻게 해야할까?
Parent parent1 = new Parent();
Parent parent2 = new Child();
여기서 Parent 는 자신과 같은 parent 의 인스턴스도 참조할 수 있고, 자식 타입인 Child 의 인스턴스도 참조할 수 있다. 이때 parent1, parent2 변수가 참조하는 인스턴스의 타입을 확인하고 싶다면 instanceof 키워드를 사용하면 된다.
package poly.basic;
public class CastingMain5 {
public static void main(String[] args) {
Parent parent1 = new Parent();
call(parent1);
Parent parent2 = new Child();
call(parent2);
}
private static void call(Parent parent) {
parent.parentMethod();
if (parent instanceof Child) {
((Child) parent).childMethod();
}
}
}
Parent method
Parent method
Child method
JAVA16 instanceof 변수 선언 가능
package poly.basic;
public class CastingMain5 {
public static void main(String[] args) {
Parent parent1 = new Parent();
call(parent1);
Parent parent2 = new Child();
call(parent2);
}
private static void call(Parent parent) {
parent.parentMethod();
if (parent instanceof Child child) { // instanceof 에 변수 선언 가능
child.childMethod();
}
}
}
Parent method
Parent method
Child method