
상위클래스인 Animal이 있고, 하위클래스인 Human이 있다고 가정했을 때,
Animal ani = new Human(); 을 할 경우 생성된 인스턴스Human은 Animal 형태이다.
Animal 자료형으로 인스턴스화 했기 때문에 Human 멤버변수와 메서드는 사용불가하고 Animal자료형의 메서드와 변수만 사용이 가능하다.💡 그럼 Animal형태로 인스턴스화 했으나 다시 Human으로 되돌아가야 할 경우 어떻게 할까?
이렇게 상위 클래스로 형 변환되었던 하위클래스를 다시 원래 자료형으로 변환하는것을 다운캐스팅이라고 한다.
다운캐스팅을 하기 전에 원래 자료형을 알아야만 변환할 때 오류를 막을 수 있다.
이처럼 자신의 원래 자료형을 확인하는 예약어가 instanceof이다.
Animal h_animal = new Human();	📢 Human클래스를 Animal자료형태로 인스턴스화
if(h_animal instanceof Human)	📢 h_animal의 이전 자료형이 Human이라면
{
	Human human = (Human)h_animal;	📢 Human 형태로 다운 캐스팅(변환)
}