3-8. 3)instanceof 연산자

zhyun·2020년 8월 29일
0

java

목록 보기
2/11

instanceof 연산자

참조변수가 참조하고 있는 인스턴스의 실제타입을 알아보기 위해
instanceof 연산자를 사용한다
(사용형식) 참조변수 instanceof 클래스명

(ex)

void doWork(){
	if(c instanceof FireCar){ //1. 인스턴스의 타입을 확인
    	FireCar fc = (FireCar)c; //2. 형변환 down-casting
}

(ex2)

package zz_practice;

public class Ex3_18 {
	public static void main(String[] args) {
		FireEngine2 fe = new FireEngine2();
		Car2 c2 = new Car2();
		
		if(fe instanceof FireEngine2){ // fe라는 참조변수는 FireEngine2를 포함하고 있ㄷㅏ. 
			System.out.println("이것은 파이어엔진의 인스턴스이다");
			FireEngine2 fe2 = fe; // 검사한 타입으로 형변환
		}
		
		if(fe instanceof Car2){// fe가 Car2에 속해 있나요? true
			System.out.println("이것은 카의 인스턴스이다");
			Car2 fe2 = fe;
		}
		
		if(fe instanceof Object){//fe가 Object에 속해 있나요? true 
			System.out.println("이것은 Object의 인스턴스이다");
			Object ff = fe;
		}
		
		if(c2 instanceof FireEngine2){ //c2의 실제타입은 FireEngine2에 속하지 않으므로 false
			System.out.println("fe는 c2의 인스턴스이다."); // flase임으로 실행 불가능
			FireEngine2 fe2 = (FireEngine2)c2; // (FireEngine2)캐스팅연산자 캐스팅 불가능
		}
		
		if(c2 instanceof Object){ //c2는 Object에 속해있나요?
			System.out.println("c2는 Object의 인스턴스이다.");
			Object c3 = c2;
		}
		
	}

}

class Car2{}

class FireEngine2 extends Car2{}
profile
HI :)

0개의 댓글