자식 클래스는 부모 클래스의 모든 멤버(변수, 메서드)를 상속받기 때문에,
자식 클래스의 인스턴스는 부모 클래스의 타입으로 간주될 수 있다.
이를 이용하여 자식 클래스의 인스턴스를 부모 클래스 타입으로 형 변환할 수 있다.
Customer customerPark = new VIPCustomer();
customerPark 변수는 Customer 클래스의 변수를 참조한다.
( VIPCustomer에만 존재하는 변수라면 참조하지 못한다. )
단, 메서드는 (양쪽에 존재할 때) VIPCustomer의 메서드를 참조한다.
따라서 서로 공유하는 메서드 중에 VIPCustomer 클래스의 인스턴스에서 오버라이딩(재정의) 된 고유한 기능이 있다면, customerPark 변수는 그 기능을 포함하게 된다.
customerPark 변수가 VIPCustomer 클래스의 인스턴스를 참조하고 있다면,
메서드 호출은 참조하는 인스턴스의 실제 타입을 기반으로 결정되기 때문이다.
따라서 customerPark를 통해 VIPCustomer 클래스에 정의된 메서드를 호출할 수 있다.
참고 이미지

출처: Do it! 자바 프로그래밍 입문 part 1 | 섹션 5 | 메서드 재정의와 가상 메서드의 원리
요약
- 변수 ⇒
Customer참조 (부모 클래스)- 메서드 ⇒
VIPCustomer참조 (자식 클래스의 인스턴스)