코드일기장

[Java] instanceof 연산자 본문

Java/OOP

[Java] instanceof 연산자

won_hyeok2 2022. 3. 20. 23:31

 

 

instanceof 연산자는

  객체 타입을 확인하는 연산자이다.

 

  그리고 참조변수의 형변환 가능 여부 확인에 사용한다. 가능하면 true를 반환해준다. instanceof의 왼쪽에는 참조변수를 오른쪽에는 타입(클래스명) 피연산자를 위치한다.

  다시 말해 instanceof 연산결과 true가 나온다면 참조변수가 검사한 타입으로 형변환 가능하다는 것이다.

 

 


public class TimeSe {
	public static void main(String[] args) {
		Parent p = new Parent();
		Child c = new Child();
		
		System.out.println(p instanceof Child);  //false
		System.out.println(p instanceof Parent); //true
		System.out.println(c instanceof Child);  //true
		System.out.println(c instanceof Parent); //false
	}
}
class Parent{}
class Child extends Parent{}

 

첫 번째 instanceof 연산 결과는 false가 나왔다.

그 이유를 쉽게 말하면 instanceof는 해당 클래스가 자기 집이 맞는지 확인해주는 역할이라고 생각하면 된다.

 

1. p instanceof Child: 부모가 자식 집을 가는 건 자기 집이 아니다.(자식 집은 자식 집이니)

2. p instanceof Parent: 부모가 부모 집에 갔으니 자기 집이다.

3. c instanceof Child: 자식이 자식 집에 갔으니 자기 집이다.

4. c instanceof Parent: 자식이 부모 집을 갔으니 자기 집이다. (자식은 부모로부터 집을 상속받을 것이니)

 

 


  그리고 모든 객체의 최고 조상은 Object이므로 instanceof 연산자의 피연사자로 Object를 넣는다면 무조건 true가 나올 것이다.

 

'Java > OOP' 카테고리의 다른 글

[Java/OOP] 추상클래스 (abstract class)  (0) 2022.04.29
[Java] 참조변수의 형변환  (0) 2022.03.15
[Java] 다형성  (0) 2022.03.04
[Java] 접근 제어자 (access modifier)  (0) 2022.02.20
[Java] static, final, abstract의 정의  (0) 2022.02.18
Comments