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를 반환합니다.