프로그래밍/JAVA
[JAVA] 객체 타입을 확인하는 instanceof
연유뿌린빙수
2024. 12. 15. 12:15
instanceof
- 객체 타입을 확인하는 연산자 (= 참조변수가 참조하고 있는 인스턴스의 실제 타입을 알아보기 위한 연산자)
- 형변환 가능 여부를 확인하며, boolean 타입으로 결과를 반환
- 객체가 어떤 클래스이자, 어떤 클래스를 상속받았는지 확인할 때 사용하는 연산자
다음과 같은 형식으로 사용한다.
객체 instanceof 타입
사용 예제
class SuperClass {
// 부모클래스 코드
}
class SubClass extends SuperClass {
// 자식클래스 코드
}
public static void main(String[] args) {
SuperClass tmpObj = new SuperClass();
SubClass sub = new SubClass();
System.out.println(tmpObj instanceof SuperClass); // true
System.out.println(tmpObj instanceof SubClass); // false
System.out.println(sub instanceof SuperClass); // true, 상속 받았기 때문
System.out.println(sub instanceof SubClass); // true
}
사용예제2
public static void Func(SuperClass tmpObj) { // 부모클래스 객체 생성
if (tmpObj instanceof SuperClass && tmpObj instanceof Sub) { // 객체 타입을 확인하는 instanceof
Sub ob = (Sub)tmpObj;
System.out.printf("Sub 객체 : a = %d, b = %d, c = %d, d = %d\n",
ob.a, ob.b, ob.c, ob.d);
} else {
System.out.printf("SuperClass 객체 : a = %d b = $d\n",
tmpObj.a, tmpObj.b);
}
}
위와 같이 부모타입을 자식타입으로 형변환하기도 가능하다.
- 부모객체 instanceof 부모클래스 : true
- 자식객체 instanceof 자식클래스 : true
- 부모객체 instanceof 자식클래스 : false
- 자식객체 instanceof 부모클래스 : true