어떤 한 클래스를 마치 부모(슈퍼) 클래스나, 자식 클래스 '처럼' 사용하게 만드는 방식이다.
예시를 보자면,
이런식으로 하면, testApple은 Apple클래스이지만, test는 Mobile로 타입캐스팅을 해서 Mobile클래스를 가진 친구가 되어버림.
똑같이 Google 클래스를 만든후, Google클래스로 상수를 만들고, Mobile 클래스로 업캐스팅을 한 후 다시 iPhone상수를 만들었다.
그리고 그 Mobile 클래스를 가진 iPhone을 Apple클래스로 다운 캐스팅 하려고 했더니, 캐스팅이 되질 않는다.
그 이유는, 맨 처음 이야기 했듯 마치 Mobile클래스인 것 '처럼' 사용하는 것에 힌트가 있음.
google과 iPhone은 각각 Google클래스, iPhone은 Mobile클래스 이지만 레퍼런스를 체크해보면 true라고 나온다.
Mobile 클래스로 업케스팅을 하였지만, 근본은 Google 클래스 이기에 Apple클래스로 다운캐스팅을 할 수 없다.