InstanceOf 연산자란?
- 두 클래스간의 형변환이 가능한지 판단하는 연산자
- 해당 인스턴스 변수가 어떤 타입의 변수인지 판단하는 연산자
- 두 클래스간의 상속관계가 있어야 한다. 즉, is a 관계가 성립한다.
- 해당 인스턴스변수가 해당 타입이면 true, 아니면 false를 반환한다.
[형식]
1) 두 클래스 간 상속관계가 존재 하지 않을 때
▲ String과 StringBuffer는 서로 아무 관계도 아니기 때문에 상속관계도 아니다. 따라서 서로 형변환이 불가하다.
하지만 두 클래스 모두 Object클래스를 상속받고 있기 때문에 Object클래스와는 상속관계에 있다.
▲호모 지니어스 방식에서 Object타입인 obj는 String클래스의 부모클래스이다. 부모 즉, 큰 그릇의 내용물을 자식 즉, 작은그릇의 내용물에 담을 수 없다. obj는 String형을 상속받고 있지 않다. 따라서 "형변환이 일어났어요1"은 실행될 수 없다.
하지만 헤테로 지니어스에서는 obj를 String으로 형변환이 가능하다. String타입 메모리 안에 Object타입 메모리도 들어 있기 때문이다.
▲ Super는 Normal의 부모 클래스로 설정했다. 따라서 둘은 상속관계에 있기 때문에 형변환이 가능하다
'Java' 카테고리의 다른 글
[Java]Object Class (0) | 2022.03.15 |
---|---|
[Java]Heterogenious(이질화) & Homogenious(동질화) (2) | 2022.03.15 |
[Java]오버라이드(Override) (0) | 2022.03.15 |
[Java]Super() - 부모의 기본생성자 (0) | 2022.03.14 |
[Java]상속(Inheritance) (0) | 2022.03.14 |