Programming

; develop a program

Back-End/Java

[Java] 다운 캐스팅과 instanceof

Clloud_ 2023. 2. 6. 15:11
반응형

이번 포스팅에서는 자바(Java)에서 다운 캐스팅과 instanceof에 대하여 공부를 해보고자 한다.

 


다운 캐스팅이란

다운 캐스팅(down casting)이란 상위 클래스로 형 변환되었던 하위 클래스를 다시 원래 자료형으로 형 변환 하는 것을 말한다.

 

 

  • 위와 같은 계층 구조에서 상위 클래스를 자료형으로 선언하는 Animal ani = new Human( ); 코드를 사용할 수 있다.
  • 이때 생성된 인스턴스 Human은 Animal형이다.
  • Animal형으로 형 변환이 이루어진 경우에는 Animal 클래스에서 선언한 메서드와 멤버 변수만 사용할 수 있다.

 

다시 말해 Human 클래스에 더 많은 메서드가 구현되어 있고 다양한 멤버 변수가 있다고 하더라도 자료형이 Animal형인 상태에서는 사용할 수 없다.

따라서 필요에 따라 다시 원래 인스턴스의 자료형으로 되돌아가야 하는 경우, 다운 캐스팅을 해야 한다.

 


instanceof란

위 상속 관계를 생각해 보면 모든 인간은 동물이지만 모든 동물은 인간이 아니다.

따라서 다운 캐스팅을 하기 전에 상위 클래스로 형 변환된 인스턴스의 원래 자료형을 확인해야 변환할 때 오류를 막을 수 있다.

이를 확인하는 예약어가 instaceof이다.

 

instanceof는 다음과 같이 사용할 수 있다.

Animal hAnimal = new Human();
if(hAnimal instanceof Human){		//hAnimal 인스턴스 자료형이 Human형이라면
    Human human = (Human)hAnimal;	//인스턴스 hAnimal을 Human형으로 다운 캐스팅
}
  • hAnimal은 원래 Human형으로 생성되었는데, Animal형으로 형 변환 되었다.
  • instanceof 예약어는 왼쪽에 잇는 변수의 원래 인스턴스형이 오른쪽 클래스 자료형인가를 확인한다.
    (아닌 경우 에러 발생)

 

참조 변수의 원래 인스턴스형을 정확히 확인하고 다운 캐스팅을 해야 안전하며, 이때 instanceof를 사용한다.

 


반응형