본문 바로가기
Language/Java

자바(java) 클래스 - instanceOf 연산자

by 쿠키오빠 2024. 9. 11.
반응형

오늘은 클래스 다형성에 대해 공부했다.

다형성이란 하나의 인스턴스가 여러가지 타입을 가질 수 있음을 의미하는데 요건 나중에 다뤄 보겠다.

 

무튼 부모 클래스와 자식 클래스의 타입이 일치하는지 확인하기 위해 instanceOf라는 연산자를 사용했다.

 

아래는 오늘 학습한 코드로 부모 클래스(동물)자식 클래스(개구리, 너구리) 로 나누고,

앞과 뒤의 타입이 일치하는지 확인해봤다.

 /* index. 4. instanceof 연산자로 확인 */
        System.out.println("======== instanceof ========");
        System.out.println("a1이 개구리 타입인지 확인 " + (a1 instanceof Frog)); // true
        System.out.println("a1이 너구리 타입인지 확인 " + (a1 instanceof Raccoon)); // false
        System.out.println("a1이 동물 타입인지 확인 " + (a1 instanceof Animal)); // true
        System.out.println("a1이 Object 타입인지 확인 " + (a1 instanceof Object)); // true
        // a1은 개구리 이면서 동물 이면서 Object이다 → 다 형 성

(a1은 Animal 형태의 자식(Frog)를 덮어 씌워 선언한 변수이다.)

 

(오른쪽은 대입연산자이고 자식이니 Animal(부모 클래스) 담을 수 있다.)

---------------------------------------------------------------------------------------------------------------------------------------------------------

 

이때 3번째 출력 구문에서 한 가지 의문점이 생겼다.

 

a1과 Animal의 타입이 일치하여 true가 반환됐는데 앞과 뒤를 바꿔도 되지 않을까?

 

바로 실행에 옮겼지만 바로 에러가 발생했다. 

(아니 타입만 맞으면 되는 거 아니여~?)

 

찾아보니, intanceOf 연산자는 나름의 규칙이 존재했다. 

 

여기서 구글링 결과, 정리한 내용을 보고 가자!

 

---------------------------------------------------------------------------------------------------------------------------------------------------------

instanceOf

객체가 어떤 클래스인지, 어떤 클래스를 상속받았는지 확인하는데 사용하는 연산자 이다.즉, 참조변수가 참조하고 있는 인스턴스의 실제 타입을 알아보기 위해 해당 연산자를 사용한다.

 

위 연잔사의 문법으로는 object instanceOf type 형태로 사용한다.

 

즉, object가 지칭하는 것과 type이 일치하는지 확인해주는 연산자이다!!!!

( 참이라면 true를 출력하고, 거짓이라면 false를 출력해준다.)

---------------------------------------------------------------------------------------------------------------------------------------------------------

 

위 공식을 제대로 알지도 몬하고 앞과 뒤의 타입만 같으면 되겠구나~ 생각했던 나는 오늘부로 새로운 깨달음을 얻었다.

 

찾아보며 정리하는 재미. 음하하~~ 앞으로도 많이 기록해야겠다 ^ㅅ^

반응형