Благодаря правильному решению понял свою ошибку: нужно вначале проверять самые младшие классы и постепенно переходить к проверке старых классов. Подскажите, плиз, почему.
Своя версия появилась, но не уверен, что она абсолютно правильная.
И как можно такой подход заменить, если можно?
package com.javarush.task.task12.task1225;
/*
Посетители
*/
public class Solution {
public static void main(String[] args) {
System.out.println(getObjectType(new Cat()));
System.out.println(getObjectType(new Tiger()));
System.out.println(getObjectType(new Lion()));
System.out.println(getObjectType(new Bull()));
System.out.println(getObjectType(new Cow()));
System.out.println(getObjectType(new Animal()));
}
public static String getObjectType(Object o) {
//напишите тут ваш код
if (o instanceof Tiger)
return "Тигр";
if (o instanceof Lion)
return "Лев";
if (o instanceof Bull)
return "Бык";
if (o instanceof Cow)
return "Корова";
if (o instanceof Animal)
return "Животное";
if (o instanceof Cat)
return "Кот";
return null;
}
public static class Cat extends Animal //<--Классы наследуются!!
{
}
public static class Tiger extends Cat {
}
public static class Lion extends Cat {
}
public static class Bull extends Animal {
}
public static class Cow extends Animal {
}
public static class Animal {
}
}