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

     

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

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