public class Solution {
    public static void main(String[] args) {
        printObjectType(new Cat());
        printObjectType(new Bird());
        printObjectType(new Lamp());
        printObjectType(new Cat());
        printObjectType(new Dog());
    }

    public static void printObjectType(Object o) {
        if(o instanceof Cat){
            System.out.print("Кошка");
            if (o instanceof Bird){
                System.out.print("Птица");
                if (o instanceof Lamp){
                    System.out.print("Лампа");
                    if (o instanceof Dog){
                        System.out.print("Собака");
                    }
                }
            }
        }
    }

    public static class Cat {
    }

    public static class Dog {
    }

    public static class Bird {
    }

    public static class Lamp {
    }
}
при таком раскладе выдает на консоль "КошкаКошка" если меняю метод на
public static void printlnObjectType(Object o) {
       //Напишите тут ваше решение
       if (o instanceof Cat) {
           System.out.println("Кошка");
       }
       if (o instanceof Bird) {
           System.out.println("Птица");
       }
       if (o instanceof Lamp) {
           System.out.println("Лампа");
       }
       if (o instanceof Dog) {
           System.out.println("Собака");
       }
   }
выводит правильно. что не устраивает в первом варианте? if(Логическое выражение 1) { //Выполняется, если логическое выражение 1 истинно if(Логическое выражение 2) { //Выполняется, если логическое выражение 2 истинно } }