instanceof
다형성에서 참조형 변수는 다양한 자식을 대상으로 참조할 수 있다. 그런데 참조하는 대상이 다양하기 때문에 어떤 인스턴스를 참조하고 있는지 확인하기 어렵다.
Parent parent1 = new Parent()
Parent parent2 = new Child()
=> parent1, 2 가 참조하는 인스턴스의 타입을 확인하려면 instanceof 키워드를 사용하면 된다.
예제
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) {
System.out.println("Child 인스턴스");
Child child = (Child) parent;
child.childMethod();
} else {
System.out.println("Child 인스턴스 아님");
}
}
}
실행 결과
자바 16 - Pattern Matching for instanceof
자바 16부터는 instanceof를 사용하면서 동시에 변수를 선언할 수 있다.
if(parent instanceof Child ) {
System.out.println("Child 인스턴스");
Child child = (Child) parent;
child.childMethod();
}
=> 이 코드를 다음과 같이 쓸 수 있다.
if(parent instanceof Child child) {
System.out.println("Child 인스턴스");
child.childMethod();
}
* 인프런 '김영한의 실전 자바 - 기본편'을 참고하여 작성하였습니다.
'프로그래밍언어 > Java' 카테고리의 다른 글
[Java 기본] 다형성 활용 (0) | 2024.07.25 |
---|---|
[Java 기본] 다형성과 메서드 오버라이딩 (0) | 2024.07.23 |
[Java 기본] 다형성과 캐스팅 (0) | 2024.07.23 |
[Java 기본] 다형성(Polymorphism) (0) | 2024.07.16 |
[Java 기본] super - 부모 참조, 생성자 (0) | 2024.07.16 |