У меня есть следующее сомнение.
В моем коде у меня есть:
Calendar today = Calendar.getInstance();
где сегодняшняя переменная является экземпляром Calendar, поэтому я не могу использовать для нее такие методы, как isLeapYear().
Делая таким образом, я могу выполнить этот метод:
GregorianCalendar today = (GregorianCalendar) Calendar.getInstance();
int currentYear = today.get(Calendar.YEAR);
boolean bisestile = today.isLeapYear(currentYear);
Я сомневаюсь: именно почему? Я привожу тот же результат, возвращенный Calendar.getInstance(), в GregorianCalendar.
Читать здесь: http://tutorials.jenkov.com/java-date-time/java-util-calendar.html
мне кажется, я понимаю, что класс java.util.Calendar является абстрактным, поэтому я не могу создать его экземпляр, поэтому я думаю, что Calendar.getInstance() strong> автоматически возвращает объект GregorianCalendar, который определил предыдущий метод isLeapYear().
Но я не могу использовать его, если объект определен как простой Calendar, а не как GregorianCalendar.
Я знаю о полиморфизме, но как именно работает в этом конкретном случае?
Я думаю, что размещение ссылки на объект GregorianCalendar (возвращенный функцией Calendar.getInstance(), верно?) в Calendar (я может это сделать, потому что Calendar — это супертип) я могу получить доступ только к подмножеству методов, определенных для этого абстрактного класса, а не ко всем методам, определенным для конкретного типа.
Правильно ли это рассуждение или я что-то упускаю?