Java

[Java]InstanceOf

MoZZANG 2022. 3. 15. 19:02
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