[자바] instanceof 연산자

June·2021년 1월 2일
0

자바

목록 보기
17/36

참조변수가 참조하고 있는 인스턴스의 실제 타입을 알아보기 위해 instanceof 연산자를 사용한다. instanceof를 이용한 연산결과로 true를 얻었다는 것은 참조변수가 검사한 타입으로 형변환이 가능하다는 것을 뜻한다.

void doWork(Car c) {
    if (c instanceof FireEngine) {
        FireEngine fe = (FireEngine)c;
        fe.water();
        ...
    } else if (c instanceof Ambulance) {
        Ambulance a = (Ambulance) c;
        a.siren();
    }

이 메서드가 호출될 때, 매개변수로 Car 클래스 또는 그 자손 인스턴스를 넘겨 받겠지만 메서드 내에서는 정확히 어떤 인스턴스인지 알 길이 없다. 그래서 instanceof 연산자를 이용해서 참조 변수 c가 가리키고 있는 인스턴스 타입을 체크하고, 적절히 형변환한 다음에 작업을 해야 한다.

조상타입의 참조변수로는 실제 인스턴스의 멤버들을 모두 사용할 수 없기 때문에, 실제 인스턴스와 같은 타입의 참조변수로 형변환을 해야만 인스턴스의 모든 멤버들을 사용할 수 있다.

0개의 댓글