План уровня:
Что еще можно посмотреть на досуге: Глава "Полиморфизм" в Thinking in Java Для чего нужен super - официальная версия Тут можно скачать краткую инструкцию по хоткеям в IntelliJ Idea
Нашли классную ссылку к материалу данной темы? Добавьте ее сюда в виде комментария. Возможно, именно Ваша ссылка поможет другому человеку стать программистом и улучшить свою жизнь!
Вернуться к плану обучения
Вернуться к обучению java онлайн на JavaRush
- Основы ООП: перегрузка, полиморфизм, абстракция, интерфейсы.
- Полиморфизм детально
- Переопределение методов
- Приведение ссылочных типов: расширение и сужение. type cast
- Динамическая диспетчеризация методов
- Доступ к методам базового класса - super
- instanceof
- Перегрузка методов
- Абстрактные классы
- Интерфейсы
Что еще можно посмотреть на досуге: Глава "Полиморфизм" в Thinking in Java Для чего нужен super - официальная версия Тут можно скачать краткую инструкцию по хоткеям в IntelliJ Idea
Нашли классную ссылку к материалу данной темы? Добавьте ее сюда в виде комментария. Возможно, именно Ваша ссылка поможет другому человеку стать программистом и улучшить свою жизнь!
Вернуться к плану обучения
Вернуться к обучению java онлайн на JavaRush
Как Вы думаете дженерики это все-таки полиморфизм или нет?)
В лекции сказано следующее:
А на intuit.ru следующее, то есть всё наоборот, поменяны понятия сужения и расширения типов:
То есть в лекции 12 переход от производного класса (дети) к базовому (родители) называют «классическим сужением типа», а на интуите «переход от детей к родителям» называют расширением. Где же правильно, или что-то я не правильно понимаю? Спасибо
А вообще да — когда преобразовывают к наследнику это нисходящее преобразование и наоборот.
теперь это…
Я считаю правильно так: от общего к конкретному – сужение типов, а с точки зрения доступных методов назвали бы расширение функциональности/ возможностей/ содержимого типа.
@Override — означает, что мы переопределяем метод, описанный в суперклассе
в «Философии Java» и других источниках написано, что наследование применяется там, где есть связь «является».
Кит ведь не является коровой.
Вывод:
class A
Что это, если не наследование статического метода?
С другой стороны, напиши мы реализацию этого метода в B, то есть переопредели его, то при вызове B.method, мы получим выполнение действий, описанных в реализации класса B. Что это, если не переопределение статического метода?
Вывод:
class B
Да, если в этом случае создать экземпляр класса B в переменной класса A и вызвать у нее этот статический метод, то вызовется реализация, описанная в классе A
Вывод:
class A
Но тут надо просто сказать, что при вызове статического метода у переменной компилятор вместо нее подставляет ее тип, и не смотрит, что в ней содержится. Т.е. следующин 2 вызова статических методов аналогичны:
Для статических методов механизм динамической диспетчеризации не применим, по определению.
а значит полиморфизм для них не работает. как то так…
альтернативная страница — это Глава «Полиморфизм» в Thinking in Java
или это другая статья на эту же тему?
оригинал:
статья:
Например
Наверное есть смысл упомянуть об этом в самом уроке.