JavaRush /Курсы /Java Core /Задачи на полиморфизм

Задачи на полиморфизм

Java Core
2 уровень , 2 лекция
Открыта

— Привет, Амиго! Вот тебе пара сотен задач на полиморфизм.

— Что? Еще и сотня задач?!

— Шучу. Всего десять. То есть пять я хотел сказать.

3
Задача
Java Core, 2 уровень, 2 лекция
Недоступна
Киты и коровы
В нормальной жизни кита с коровой не перепутать (хотя в террианских водах порой встречаются морские коровы, а на планетах Содружества и не такое встретишь!), а вот в программировании — сколько угодно. Напишем правильный геттер для класса кит, чтобы программа выдавала фразу «я не корова, я — кит».
3
Задача
Java Core, 2 уровень, 2 лекция
Недоступна
Кит, коровий потомок
Переопределение методов в Java — очень сильный инструмент. Так что усваиваем его на практике, начинаем прямо сейчас. У нас есть кит, потомок коровы. Не спрашивайте, почему так получилось. Дело семейное… Переопределим геттер киту так, чтобы на экран не выводилось сообщение, что он — корова.
3
Задача
Java Core, 2 уровень, 2 лекция
Недоступна
Кесарю — кесарево
Не вызывает сомнения то, что коты и собаки — это животные. И их потомки должны быть животными. Но не просто животными, а совершенно конкретными животными, котами и собаками. Согласны? В таком случае, переопределите метод getChild в классах Cat и Dog, чтобы кот порождал кота, а собака – собаку.
3
Задача
Java Core, 2 уровень, 2 лекция
Недоступна
То ли птица, то ли лампа
Что общего у птицы и лампы? То, что и птицы, и лампы могут быть объектами своих классов. А объекты можно передавать в методы в качестве переменных. В этой задаче пишем метод, который определяет, объект какого класса ему передали, и выводит на экран одну из надписей: Кошка, Собака, Птица, Лампа.
3
Задача
Java Core, 2 уровень, 2 лекция
Недоступна
Определимся с животным
Жизненно важно уметь определять, к какому классу относится животное, считает заводчик кошек Павловна. Давайте поможем Павловне и напишем метод, который определяет, объект какого класса ему передали, и возвращает результат: «Корова», «Кит», «Собака», «Неизвестное животное».
Комментарии (259)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Ratmir Mussabayev Уровень 25
12 сентября 2024
Объясните пожалуйста ситуацию с последней задачкой: я вот написал тремя разными способами(работает и так и так, но в чем разница? только лишь в количестве букв?): public static String getObjectType(Object o) { if (o.getClass().equals(Cow.class)) { return "Корова"; } else if (o instanceof Dog) { return "Собака"; } else if (o.getClass().isAssignableFrom(Whale.class)) { return "Кит"; } else { return "Неизвестное животное"; } }
MegaDog666 Уровень 30
18 сентября 2024
В чем разница применения if (obj instanceof Student) и if (getClass () == obj.getClass ())? Давайте разберемся, что делает каждый подход: instanceof проверяет, является ли ссылка на объект с левой стороны экземпляром типа с правой стороны или некоторым его подтипом. getClass() == ... проверяет идентичность типов. То есть, если getClass() проверяет полную идентичность класса, то instanceof вернет true даже если объект будет всего лишь подтипом, что может дать нам большую гибкость при активном использовании полиморфизма. Собственно, оба подхода хороши, если понимать особенности их работы и применять в нужных местах Есть ещё одно важное отличие. Посмотрите на этот код, он не компилируется:

// Doesn't compile. Cannot class at runtime with instanceof
if (b instanceof obj.getClass()) {
 
}
Для instanceof тип класса, на принадлежность которому мы проверяем, должен быть известен на этапе компиляции. Но мы можем сделать это с помощью Class.isAssignableFrom:

    if (obj.getClass().isAssignableFrom(b.getClass())) {
        System.out.println("obj.getClass() isAssignableFrom b.getClass()");
    }
С помощью Class.isAssignableFrom мы можем проверить принадлежность типу или его потомку даже в том случае, когда тип, на принадлежность которому мы проверяем, на этапе компиляции неизвестен.
Илья Уровень 36
4 октября 2024
o instanceof Cow сделай в if
FolFix Уровень 34
18 августа 2024
Пора кушать материю
SashaCurry Уровень 30
14 августа 2024
-сколько задач? -
vlby Уровень 34
14 августа 2024
не считая самых первых уровней java syntax, пожалуй 1-й уровень все задачи которого получилось решить сразу, не читая лекций)( как-то пока не впечатляет java core( надеюсь пока) лекции все ж проработаю еще конечно)
{Java_Shark} Уровень 28
16 июля 2024
++
Fred Уровень 29
9 мая 2024
фармим ачивы
Light_Day :) Уровень 46
7 мая 2024
Kuttubek7 Уровень 25
21 марта 2024
easy peasy lemon squeezy
Daniil Уровень 24 Expert
2 февраля 2024
Спасибо JDK джавараша за то что остановил мое развитие на 13 версии, когда я задачи хотел через .getClass() решить
hhzktoeto Уровень 1
17 января 2024
Что я точно уяснил : Не наследуйте Кита от Коровы и не будет проблем