자바에서 슈퍼클래스의 레퍼런스 변수로 하위클래스의 인스턴스를 할당할 시에

왜 하위클래스에서 선언된 메소드를 사용할때는 명시적 형변환을 해줘야하는거죠?

레퍼런스 변수의 타입이 슈퍼클래스에서 선언된거라 그런 메소드가 있음을 인지못할수도 있어도 직접 하위클래스까지 찾아가다보면 결국 해당 메소드의 존재를 알수있는거 아닌가요

혹은 존재하는지 모르는 메소드를 탐색하는 효율 때문이라면 자바는 컴파일+인터프리터 언어라 컴파일 단계에서 묵시적 형변환처럼 처음부터 컴파일러가 대신 적용시켜줄수있는거 아닌가요?

그렇게 하지못하는 이유가 있나요

메모리에 레퍼런스 변수와 실제 인스턴스가 할당되는 구조를 모르니까 헷갈리네요