728x90
반응형
33) instanceof연산자
1. instanceof연산자란?
-참조변수의 형변환 가능 여부 확인에 사용. 가능하면 true반환
-형 변환 전에 반드시 instanceof로 확인해야 한다.
1
2
3
4
5
|
void dowork(Car c) {
if(c instanceof FireEngine) { //1.형변환이 가능한지 확인
FireEngine fe = (FireEngine)c; //2.형변환
}
}
|
cs |
1행| void dowork(Car c) { Car c가 조상이기 때문에 객체로는 new Car(), new FireEngine(), new Ambulance()가 올 수 있다. 그 객체를 쓰기 전에 맞는지 확인하려 하는 것이다. 참조변수 형변환은 조상과 자손끼리만 된다.
2. 형변환 하는 이유
인스턴스의 원래 기능을 모두 사용하려고 한다. Car타입의 리모콘인 c로는 water()를 호출할 수 없다. 리모콘을 FireEngine타입으로 바꿔서 water()을 호출하기 위함이다.
3. instanceof는 조상과 자기 자신에 대해서 참을 반환한다.
1
2
3
4
|
FireEngine fe = new FireEngine();
System.out.println(fe instanceof Object); //true
System.out.println(fe instanceof Car); //true
System.out.println(fe instanceof FireEngine); //true
|
cs |
형변환이 가능하다고 'true'가 나왔다해서 FireEngine이 가리키는 게 Object나 Car는 아니죠. 형변환 가능 여부만 묻고 싶을 뿐.. 객체는 그대로.
<정리 퀴즈>
Q. 참조변수의 형변환은 왜 하나?
:참조변수(리모콘)을 변경함으로써 사용할 수 있는 멤버의 개수를 조절하기 위해서
Q. instanceof연산자는 언제 사용하나?
:참조변수를 형변환하기 전에 형변환 가능 여부를 확인할 때
*유튜브 남궁성 선생님의 `자바의 정석`을 참고하여 만들었습니다*
*자세히 보고 싶은 분들은 유튜브 가서 보시면 됩니다*
728x90
반응형
'back-end > JAVA' 카테고리의 다른 글
35) 매개변수의 다형성(2)-하나의 배열로 여러 종류 객체 다루기 (0) | 2021.06.10 |
---|---|
34) 매개변수의 다형성(1)-다형적 매개변수 (0) | 2021.06.10 |
32) 참조변수의 형변환 (0) | 2021.06.09 |
31) 다형성(polymorphism) (0) | 2021.06.09 |
30) 접근제어자와 캡슐화(encapsulation) (0) | 2021.06.07 |