instanceof 연산자
참조변수명 instanceof 클래스명
참조하고 있는 객체가 클래스명 객체가 맞는 지 확인 (true / false)
<주의 사항>
- instanceof는 참조하고 있는 객체가 상속하고있는 객체도 같이 확인하기 때문에
자식 객체를 참조하는 변수에 부모 타입을 검사하면 true가 나온다!!
ex)
Parent p = new Child(); // 업 캐스팅
p instanceof Child
-> p가 참조하는 객체가 Child야? true
p instanceof Parent
-> p가 참조하는 객체가 Parent야? true 주의 사항을 잘 이용하면
Parent, Child 클래스 상속 관계가 맞는지 확인하는 용도로도 사용 가능!
Object
모든 클래스(객체)의 최상위 부모
Object[] arr = new Object[3];
// Object 참조 변수 3개 묶음
* Object 참조변수 = Parent / Child/ Object
arr[0] = new Parent(); // Parent -> Object로 업 캐스팅
arr[1] = new Child(); // Child -> Object로 업 캐스팅
arr[2] = new Object(); // 같은 자료형 연산
<향상된 for문1>
for(Object obj : arr) {
/* tip. 자료형을 연달아 검사하는 경우
* 마지막 자식 자료형부터 검사하는게 좋다!!!
* */
// 얻어온 요소가 Child 타입이면
if(obj instanceof Child) {
System.out.println("Child 입니다");
}
// 얻어온 요소가 Parent 타입이면
else if(obj instanceof Parent) {
System.out.println("Parent 입니다");
}
// 얻어온 요소가 Object 타입이면
else {
System.out.println("Object 입니다");
}
}
#결과

<향상된 for문2>
System.out.println("[부모 -> 자식 역순 검사 문제점]");
for(Object obj : arr) {
// 얻어온 요소가 Object 타입이면
if(obj instanceof Object) {
System.out.println("Object 입니다");
}
// 얻어온 요소가 Parent 타입이면
else if(obj instanceof Parent) {
System.out.println("Parent 입니다");
}
// 얻어온 요소가 Child 타입이면
else {
System.out.println("Child 입니다");
}
}
#결과

'BackEnd > Java' 카테고리의 다른 글
| [Java]다형성 추상클래스 (0) | 2024.07.31 |
|---|---|
| [Java]객체 배열(Object_Array) (0) | 2024.07.31 |
| [Java]다형성 (Polymorphism) (0) | 2024.07.31 |
| [Java]상속(Inheritance) final 클래스 (0) | 2024.07.31 |
| [Java]상속(Inheritance) 오버라이딩 (0) | 2024.07.31 |