Minwoo Dev.

[Java] instanceof 본문

Java

[Java] instanceof

itisminu 2024. 4. 10. 13:40
728x90
반응형
SMALL

instanceof

다형적 참조를 이용할 때, 여러가지 방법으로 참조를 하게 된다.

이럴 때, 어떤 변수가 어떤 타입의 값을 참조하고 있는지 헷갈릴 수 있다.

 

그럴 때 확인할 수 있는 방법이 instanceof이다.

instanceof를 사용하는 방법에 대하여 알아보겠다.

 

우선 사용 형식이다.

 

(인스턴스 이름) instanceof (타입 이름)

위 형식대로 작성한다면, (인스턴스 이름) 이 (타입 이름)의 인스턴스인지를 확인하여 true , false 로 출력한다.

 

  • (인스턴스 이름) : 인스턴스를 참조한 변수 이름이 들어간다.
  • (타입 이름) : 클래스 이름이 들어간다.

 

예시 코드

package practice.poly;

public class instanceofex {
    public static void main(String[] args) {
        Parent parent1 = new Parent();
        System.out.println("parent1 호출");
        checkInstance(parent1);

        Parent parent2 = new Child();
        System.out.println("parent2 호출");
        checkInstance(parent2);
    }

    private static void checkInstance(Parent parent){
        parent.pMethod();
        if(parent instanceof Child){
            System.out.println("Child 인스턴스임");
            Child child = (Child) parent;
            child.cMthod();
        }
        else {
            System.out.println("Chlid 인스턴스 아님");
        }
        System.out.println();
    }
}

 

위 코드에서는 Parent 타입의 변수 parent1에 Parent 인스턴스를 참조하였고,

그리고 Parent 타입의 변수 parent2에 Child 인스턴스를 참조하였다.

 

 

각 변수별로 Child의 인스턴스인지 확인하는 함수인 checkInstance 함수를 작성하였고, 실행하는 코드이다.

 

만약 Child의 인스턴스라면(parent instanceof Child == true) , Child 인스턴스라는 말을 출력하고 cMethod를 실행한다.

아니라면, Child 인스턴스가 아니라고 출력한다.

 

 

 

위처럼 클래스의 인스턴스인지를 확인하여 에러 없이 상황에 맞게 코드를 실행할 수 있게된다.

 

이처럼 다형적 참조와 instanceof를 활용하면 더 좋은 코드를 작성할 수 있다.

728x90
반응형
LIST