Calendar cal = Calendar.getInstance(); возвращает GregorianCalendar, как в таком случае могут выполняться методы?
Calendar cal = Calendar.getInstance(); возвращает GregorianCalendar, как в таком случае могут выполняться методы GregorianCalendar, если java смотрит на методы ссылочной переменной, а не на объект на который ссылается?
И почему используют конструкцию Calendar cal = Calendar.getInstance(); вместо GregorianCalendar var = new GregorianCalendar() ?
Calendar - это абстрактный класс. GregorianCalendar его расширяет.
Вам нужно работать с Calendar и не думать о конкретной реализации.
В зависимости от локали может быть возвращён и другой тип, не только GregorianCalendar.