1. instanceof 연산자는 참조변수가 참조하고 있는 실제 타입을 알아보기 위해 사용한다. 주로 조건문에 사용되며 instanceof의 왼쪽에는 참조변수를 오른쪽에는 타입(클래스명)이 피연산자로 위치한다. 연산의 결과는 true 또는 false로 반환한다. 이 때 true로 값을 얻는다는 건 참조변수가 검사한 타입으로 형변환이 가능하다는 의미다.
2. 형태
참조변수 instanceof 참조타입(클래스명)
instanceof 연산자 예제)
class InstanceofTest {
public static void main(String args[]) {
FireEngine2 fe = new FireEngine2();
if(fe instanceof FireEngine2) {
System.out.println("This is a FireEngine2 instance.");
}
if(fe instanceof Car2) {
System.out.println("This is a Car2 instance.");
}
if(fe instanceof Object) {
System.out.println("This is an Object instance.");
}
System.out.println(fe.getClass().getName()); // 클래스의 이름을 출력
}
} // class
class Car2 {}
class FireEngine2 extends Car2 {}
① 생성된 인스턴스는 FireEngine타입이다.
② 그럼에도 불구하고 Object, Car타입의 instanceof 연산에서도 true.
③ 이유는 FireEngine클래스는 Object클래스와 Car클래스의 자식 클래스이므로 부모의 멤버들을 상속 받았기 때문
④ 실제 인스턴스와 같은 타입의 instanceof 연산 이외에 부모타입의 instanceof 연산에도 teru를 결과로 얻으며 instanceof 연산의 결과가 true라는 것은 검사한 타입으의 형변환을 해도 아무런 문제가 없다.
'Java > Basic' 카테고리의 다른 글
다형성(polymorphism) - 매개변수의 다형성 (0) | 2021.04.03 |
---|---|
다형성(polymorphism) - 참조변수와 인스턴스의 연결 (0) | 2021.04.01 |
다형성(polymorphism) (0) | 2021.03.30 |
접근제어자(Access Modifier)와 제어자(Modifier) (0) | 2021.03.26 |
오버로딩과 오버라이딩 (0) | 2021.03.25 |
댓글