public static ArrayList<Astronaut> astronauts = new ArrayList<>(); public static void runWorkingProcess() { for(Astronaut face:astronauts) { if (face instanceof Human) pilot((Human)face); } } Подскажите пожалуйста зачем в вызове методов надо явное приведение типов. Почему не сработает if (face instanceof Human) pilot(face); Ведь instanceof же указывает на принадлежность к Human обьекта Astronaut.