더북(TheBook)

이렇게 c 앞에 Van형으로 형변환해줍니다. 형변환한 상태에서 runppangppang을 실행하면 모두 잘 실행합니다.

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으로 타입을 바꿀 수 있었습니다.

 

마지막으로 정리하겠습니다. 클래스끼리도 형변환할 수 있습니다. 형변환해야 하는 이유는 무엇일까요? 부모가 자식을 가리킬 수 있으나 부모가 가리키고 있을 때는 부모가 알고 있는 메서드까지만 접근할 수 있기 때문입니다. 이때 형변환으로 객체가 가진 모든 부분을 사용한다는 것을 기억하세요.

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