이렇게 c 앞에 Van형으로 형변환해줍니다. 형변환한 상태에서 run과 ppangppang을 실행하면 모두 잘 실행합니다.
package javaStudy; public class VanExam { public static void main(String[] args) { Car c = new Van(); c.run(); // c.ppangppang(); Van van = (Van) c ; van.run(); van.ppangppang(); } }
실행결과
Car의 run 메서드 Car의 run 메서드 빵빵
이 예제에서 형변환이 가능한 이유는 Car가 참조하는 변수가 원래 Van이었기 때문입니다. 즉, 실제로 생성된 것이 Van이었기 때문에 Van으로 타입을 바꿀 수 있었습니다.
마지막으로 정리하겠습니다. 클래스끼리도 형변환할 수 있습니다. 형변환해야 하는 이유는 무엇일까요? 부모가 자식을 가리킬 수 있으나 부모가 가리키고 있을 때는 부모가 알고 있는 메서드까지만 접근할 수 있기 때문입니다. 이때 형변환으로 객체가 가진 모든 부분을 사용한다는 것을 기억하세요.