반응형
참조변수가 참조하고 있는 인스턴스 실제 타입을 알아보기 위해 사용
- 주로 조건문에 사용된다.
- instanceof의 왼쪽에는 참조변수 오른쪽에는 타입(클래스명)이 피연산자로 위치한다.
- 참조변수가 검사한 타입으로 형변환이 가능하면 결과는 boolean 값으로 true 아니면 false
- 값이 null인 참조변수는 false
public static void main(String[] args) {
System.out.println("hihi");
Car car = null;
RedCar redCar = new RedCar();
car = redCar; //(Car)redCar 생략
if(car instanceof RedCar){ //1. 형변환이 가능한지 확인
RedCar redCar1 = (RedCar)car; //2. 형변환
System.out.println("redCar1 = " + redCar1.door);
}
}
// 이런식으로 사용가능
void doWork(Car c){
if(c instanceof RedCar){
RedCar rc = (RedCar)c;
c.(Redcar 멤버);
...
doWork 메서드가 호출될 때, 매개변수로 Car클래스 또는 그 자식 클래스의 인스턴스를 넘겨받겠지만 메서드 내에서 정확히 어떤 인스턴스인지 알 수 없다. (instanceof 사용하는 이유)
- 부모타입의 참조변수로는 자식 인스턴스의 멤버들을 모두 사용할 수 없기 때문에 실제 인스턴스와 같은 타입의 참조변수로 형변환을 해야만 인스턴스의 모든 멤버들을 사용할 수 있다.
- 참조변수 타입과 인스턴스의 타입이 항상 일치하지 않기 때문이다.
반응형
'책 > Java의 정석' 카테고리의 다른 글
[java] 예외처리(2) (0) | 2023.02.07 |
---|---|
[java] 예외처리(1) (0) | 2023.02.07 |
[java] 내부 클래스(inner class)와 익명 클래스(anonymous class) (0) | 2023.02.04 |
[java] 인터페이스 && default 메서드와 static 메서드 (0) | 2023.02.04 |
[java] 추상클래스와 추상메서드 (0) | 2023.02.04 |