План уровня:
Что еще можно посмотреть на досуге:
"Информация о типах" в Thinking in java
RTTI - run-time type identification
Преобразование ссылочных типов или спящий волк на клавиатуре
http://habrahabr.ru/post/27108/
https://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html#jls-5.1.6
https://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html#jls-5.5
Нашли классную ссылку к материалу данной темы? Добавьте ее сюда в виде комментария. Возможно, именно Ваша ссылка поможет другому человеку стать программистом и улучшить свою жизнь!
Вернуться к плану обучения
Вернуться к обучению java онлайн на JavaRush
- Приведение типов, instanceof. Большая задача на интерфейсы.
- instanceof
- Приведение ссылочных типов: расширение и сужение. type cast
- Singleton pattern

Нашли классную ссылку к материалу данной темы? Добавьте ее сюда в виде комментария. Возможно, именно Ваша ссылка поможет другому человеку стать программистом и улучшить свою жизнь!
Вернуться к плану обучения
Вернуться к обучению java онлайн на JavaRush
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Но ведь это не так? Точнее, забыли про боооольшууую оговорку. Благодаря полиморфизму Java сама определяет, метод какого класса вызвать. И объект Tiger, присвоенный переменной Cat вполне может вызвать метод класса Tiger. Все зависит от того, какой аргумент подадут на вход.
У меня возник вопрос. Какую смысловую нагрузку несет число 37, это просто первое пришедшее на ум автору число или это специальное число, которое должно на что-то меня натолкнуть?
info.javarush.ru/translation/2013/09/14/Шаблон-проектирования-Singleton-одиночка-наиболее-рациональные-реализации-в-примерах-.html
RTTI — run-time type identification
Ось робоча адресація: RTTI — run-time type identification
На 10 уровне говорилось:
«Кратко и по существу о преобразовании ссылочных типов. Но пока мы коснёмся только переменной типа Object. Этой переменной можно присвоить ссылку любого типа (расширение типа). Но чтобы выполнить обратное присваивание (сужение типа) приходится явно указывать операцию приведения:
».
И примеры.
Типичное расширение ссылочного типа:
Типичное сужение ссылочного типа:
Дошел до 14 уровня, там говорится обратное:
«Движение вверх по цепочке наследования называется сужением, т.к. теряется возможность вызвать методы, которые были добавлены в класс при наследовании.»
И пример.
При расширении типа, нужно использовать оператор преобразования типа.
Или я чего-то недопонимаю? Объясните пожалуйста.
почему можно сделать такое расширение:
но нельзя такое:
Ведь вроде бы и pet и pet1 хранят объекты класса Pet.
В случае же объекта, изначально созданного как Pet, приведение к классу-потомку невозможно.
И превратить потом такого зверька в тигра никак не получится)
Почему нельзя сделать так:
если в классе Pet тоже есть метод doTigerActions(), то во втором случае выполнится он, а нам нужен метод из класса Tiger?
Ну и плюс нелогично в Pet делать метод для тигра)
Если в переменной pet хранится ссылка на объект класса Tiger, значит, можно вызывать методы этого класса, нет?
и не сделать приведение типа, тогда у tiger будет один метод doPet.
Т.е. tiger имеет методы только класса Pet, поскольку объявлена как Pet tiger. Несмотря на то что в ней хранится ссылка на экземпляр класса Tiger.
К примеру, имея классы:
Зачем использовать переменную класса Pet
вместо «родной» переменной класса Tiger?
Преобразование ссылочных типов или спящий волк на клавиатуре
у меня вопрос, что лучше использовать в программе:
1) String name = object.getClass().getSimpleName();
if( «Vasya».equals(name)){
doSmth();
}
2)if(object instanseof Vasya) doSmth();
Пока я мало об этом знаю. Но подгонять архитектуру под рефлексию, чтобы получить мега гибкую архитектуру… смахивает на silver-bullet.
там вводишь названия классов в которых запустить методы.
в задаче 4 класса, а если бы их было 1000? вот я подумал, что проще написать 4 строчки кода, чем 1000 instanceof. но новый плагин сказал что я лошара: типа 90% справились лучше =))
Мне просто интересно это действительно на столько труднопонимаемо, или же это спостобность автора писать сложно о простых вещах?
* главы — Strings, Generics, Containers in Depth, Enumeration types, Annotations, GUI
* абсолютно все задачи
Это о многом говорит. Это почти полкниги. Красноречивы и отзывы на ozon`е.
В общем и целом по содержанию книга не плохая.
Вообще, спецификация языка достаточно доступно написана плюс к ней java tutorials очень хороши — все из первых рук. Есть интересная статья «4 Things I Wish I Would Have Known When I Started My Software Development Career», в которой упоминаются книги «Code Complete» и «Clean Code», а также
by-bismark.net.ua/java-refleksiya
пункты 5.1.5 и 5.1.6.
Собака
|Немецкая борзая| Пудель| Белый Бим чёрное ухо|...| гончая|
Там еще запоминать легко было, что как для примитивных типов, так и ссылочных, при расширении не требуется явно указывать в скобках тип, к которому преобразуем. Ну и вроде как логично, что родительский класс охватывает все дочерние, т.е шире в этом смысле.
В итоге упоминание в лекциях обратной формулировки несколько сбивает, хотя понятно, что здесь уже имеется ввиду расширенный набор методов, доступный у объектов дочерних классов (отсюда и «extends»).
Как компромисс, можно использовать термин из «Философии java» — восходящее/нисходящее преобразование, тогда нет этой двусмысленности.
Your text to link...