0%

Javainstanceof

instanceof

어떤 계층에 속하는지. 클래스의 등급

1
public class unit{
2
  public int age;
3
  public void attack(){
4
    System.out.println("critical!");
5
  }
6
}
1
public class enemy extends unit{
2
  
3
}

위와 같이 unit과 unit을 상속받은 enemy라는 class가 있을 때, unit과 enemy의 기능은 유사합니다. 이 때, unit class인지 enemy class인지 구분할 때 사용하는 것이 instance입니다.

1
if('class변수' instanceof 'class이름'){
2
  
3
}
1
ex)
2
public static void main(String[] args){
3
  unit parent = new unit();
4
  
5
  if(parent instanceof unit) {
6
    System.out.println("unit 클래스입니다.");
7
  }
8
}

클래스가 상속 관계에 있을 시, 자식 클래스 변수를 instanceof를 사용하여, 부모 클래스 타입이름과 비교하더라도 true를 반환합니다.(반대로 부모 클래스는 자식 클래스로 인지되지 않습니다.)

1
public static void main(String[] args) {
2
  unit parent = new unit();
3
  enemy child = new enemy();
4
  
5
  if(child instanceof unit){
6
    System.out.println("Child는 enemy클래스이지만, enemy클래스는 unit클래스의 자식 클래스이므로 이 문구가 출력됩니다.")
7
  }
8
}

Object는 모든 클래스의 부모클래스이므로, 다른 클래스 변수와 instaceof 사용 시, ture를 반환합니다.

image

image

image