if (o instanceof Cat)
return "Кот";
else if (o instanceof Tiger)
return "Тигр";
else if (o instanceof Lion)
return "Лев";
Рез-тат: везде кот. Как я понял, instanceof возвращает true для наследников.
Вопрос: почему в случае o instanceof Cat - Кот, хотя кот наследуется от Animals?Andrey Tyurin
29 уровень
Принципы работы instanceof
Решен
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
jaymz
28 января 2019, 12:11
Да, просто важен порядок проверки. Вы, когда сдавали задачи по исключениям (Exception) в начале отлавливали частное (к примеру OutOfBounds Exception) , а в конце - общее (Exception). Ведь у исключений тот же механизм наследования.
+3
Andrey Tyurin
7 января 2019, 20:09
Господа, ваша коварность не знает границ! вы хоть такие моменты подсвечивайте в лекциях.... Книги и просторы инета круто, но все-таки.... СПС за комментарий, все стало понятно по цепочке. Тигр это животное и кот, важно на соответствие чему я проверяю и в какой момент
0
--------Master
7 января 2019, 19:54решение
А как наследование от Animals должно мешать определению конкретного класса объекта? Вообще, все классы наследуются от Object, так по этой логике только o instanceof Object должно возвращать true? ))
В приведенном куске у тебя логика нарушена в том плане, что до проверки на классы-наследники дело просто не доходит - если Tiger extends Cat, то instanceof Cat будет возвращать true, а проверка instanceof Tiger уже выполняться просто не будет
+9