не понимаю почему в случае Swich он идет по всем case? а не только по тому который нужен? а как правельно было бы написать swich (o instedOf) ??? что потом в Case писать?
package com.javarush.task.task12.task1204;

/*
То ли птица, то ли лампа
*/

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) {
//        System.out.println(o.getClass().getName());
        switch (o.getClass().getSimpleName()) {
            case "Cat":
                System.out.println("Кошка");
            case "Dog":
                System.out.println("Собака");
            case "Lamp":
                System.out.println("Лампа");
            case "Bird":
                System.out.println("Птица");
        }
//        if (o.getClass().getName().contains("Cat")){
//            System.out.println("Кошка");
//        }

//        if (o instanceof Cat){
//            System.out.println("Кошка");
//        } else if (o instanceof Bird){
//            System.out.println("Птица");
//        }else if (o instanceof Lamp){
//            System.out.println("Лампа");
//        }else if (o instanceof  Dog){
//            System.out.println("Собака");
//        }
    }


    public static class Cat {
    }

    public static class Dog {
    }

    public static class Bird {
    }

    public static class Lamp {
    }
}