Java

자바_instanceof (객체타입 확인)

오개발 2024. 10. 30. 12:04

자바의 신 서적을 을 보다가 멘토님의 질문에 답을 잘 하지 못해, 관련 자료를 찾아봤다, 신기한게 개발을 할때 잘 쓰고 있는걸 막상 말하려고 하니까

이야기를 잘 하지 못한다

 

instanceof는 객체 타입을 확인하는 연산자이다, 리턴 값으론 true / false 로 반환한다.

 

주로 상속 관계에서 부모객체인지 자식 객체인지 확인 하는데 사용한다, 이부분이 정확하게 이해가 안되어 여러가지 실해을 하였다.

 

 

public class InstanceofTest {

    public static void main(String[] args){

        Parent parent = new Parent();
        Child child = new Child();

        System.out.println( parent instanceof Parent );  // true
        System.out.println( child instanceof Parent );   // true
        System.out.println( parent instanceof Child );   // false
        System.out.println( child instanceof Child );   // true
    }

}

 

이렇게 된다 나머지 값 한개 false 값으로 나온다.

        System.out.println( parent instanceof Child );   // false

 

결론적으론 Parnet 클래스는 상위 클래스 이기 때문이다, 상위클래는 하위 클래스를 참조 못하기 때문에 실제로 parent는 Child인지 알수가 없다.

 

더 쉽게 풀이 하자면

 

1. parent instanceof Parent : 부모가 본인 집을 찾았으니 true

2. child instanceof Parent : 자식이 상속받은 부모 집을 찾았으니 true (상속을 받았으니 자기 집이라 해도 무방하다?)

3. parent instanceof Child : 부모가 자식 집을 찾았으니 false (자식 집은 자식 집이지 부모 집은 아니니까)

4. child instanceof Child : 자식이 본인 집을 찾았으니 true

 

'Java' 카테고리의 다른 글

부동소수점에서 엡실론  (1) 2024.10.31
오토 박싱 & 오토 언박싱  (1) 2024.10.30
초기화 블록  (0) 2024.10.29
스트링 빌더와 스트링 연산 최적화  (3) 2024.10.29
UTF 인코딩  (0) 2024.10.28