더북(TheBook)

코드를 다시 보면 Van 타입을 Car 타입이 가리키고 있습니다. Car 클래스가 Van 클래스의 부모로 더 큰 그릇이기 때문에 아무 문제없이 가리킬 수 있었던 것입니다.

 

그런데 이것을 Van 타입으로 묶어서 c를 가리키려고 하면 에러가 발생합니다.

Van van = c ;

 

실행결과

Type mismatch: cannot convert from Car to Van

 

컴파일러 입장에서 cCar형이기 때문에 그보다 작은 Van형이 가리킬 수는 없습니다.

 

CarVan보다 상위 개념입니다. Car에 다른 차, 즉 트럭이 올지 스포츠카가 올지 알 수 없습니다. 그런 차를 가리키면서 Van이라고 할 수는 없기 때문에 허용하지 않습니다.

 

기본형 변수에서 큰 그릇에 담겨있는 것을 작은 그릇에 넣을 때를 다시 생각해보세요. 프로그래머가 그릇의 크기를 알고 있을 때 강제로 형변환해줬죠? 그와 똑같습니다.

Van van = (Van)c ;
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.