☕ 자바 JAVA/☕ 클래스와 함수 Class & Method

[JAVA]instanceof 연산자:형변환 전 확인용도

yeun.log 2024. 4. 6. 05:25
반응형

 

참조변수의 형변환 가능여부 확인에 사용

 

같은 Car4 class를 상속받을 뿐, FireEngine2은 Ambulance2는 형변환이 불가능한 관계

 
    static void doWork(Car4 c) {
        // FireEngine2은 Ambulance2과 형변환이 안되므로 확인
        // c가 FireEngine2일 경우 실행하는 if문
        if (c instanceof FireEngine2) { // 형변환이 가능한 지 확인
            FireEngine2 fe = (FireEngine2) c;
            fe.water();
        }
    }

 

따라서
형변환 전에 반드시 instanceof로 확인필요

 


 

        System.out.println(fe instanceof Object);       // true
        System.out.println(fe instanceof Car4);         // true
        System.out.println(fe instanceof FireEngine2);  // true
조상인 경우 모두 참 true 반환
이 점을 주의할 것

 

한마디로 조상class로 확인해봤자 별 의미 없다..

그래서 instanceof 뒤에는 자식class가 오는 게 옳은 듯

 

        // 따라서 조상인 Object나 Car4에 대해서도 형변환이 가능은 하다.
        Object obj = fe;    
        Car4 c = fe;

이런 것도 가능..하지만 어차피 fe에 있는 것만 쓸 수 있다는 거

 

반응형