[Java] instanceof

2024. 4. 10. 13:40·Java
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
저작자표시 비영리 변경금지 (새창열림)

'Java' 카테고리의 다른 글

[Java] static 메서드  (0) 2024.05.10
[Java] 접근 지정자(Access Modifier), Public, Protected, Default, Private  (0) 2024.05.10
[Java] 다형성 - 다형적 참조, 다운캐스팅(Down Casting), 업캐스팅(Up Casting)  (0) 2024.04.10
[Java] this  (0) 2024.03.24
[Java] 클래스와 객체, 객체지향 프로그래밍(OOP) - 예시  (0) 2024.03.24
'Java' 카테고리의 다른 글
  • [Java] static 메서드
  • [Java] 접근 지정자(Access Modifier), Public, Protected, Default, Private
  • [Java] 다형성 - 다형적 참조, 다운캐스팅(Down Casting), 업캐스팅(Up Casting)
  • [Java] this
미누라니까요
미누라니까요
안녕하세요. 개발은 정말 신나는 짓이에요. 이론보다 실습을 더 좋아하는 불도저 타입이랍니다.
  • 미누라니까요
    미누에요
    미누라니까요
  • 전체
    오늘
    어제
    • 분류 전체보기 (367)
      • 우당탕탕개발기록 (11)
      • Machine Vision (1)
      • JavaScript (33)
      • Frontend (62)
      • AI (30)
      • C++ (79)
      • Java (48)
      • Python (8)
      • 자료구조 (25)
      • Arduino (3)
      • Project (2)
      • 알고리즘 (51)
      • Git & Github (6)
      • Backend (5)
      • 회고록 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • instagram
  • 공지사항

  • 인기 글

  • 태그

    integer
    og태그
    wrapper
    컬렉션
    카카오톡 링크 공유 미리보기
    java
    generic
    open graph
    Collection
    개발
    제네릭
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
미누라니까요
[Java] instanceof
상단으로

티스토리툴바