public class Solution {
public static ArrayList<Astronaut> astronauts = new ArrayList<>();
public static void main(String[] args) {
createCrew();
printCrewInfo();
runWorkingProcess();
}
public static void runWorkingProcess() {
for (Astronaut astronaut : astronauts) {
if (astronaut instanceof Human) {
pilot((Human) astronaut);
} else if (astronaut instanceof Dog) {
createDirection((Dog) astronaut);
} else {
research((Cat) astronaut);
}
}
}
public static void pilot(Human human) {
System.out.println("Член экипажа " + human.getInfo() + " пилотирует корабль.");
}
public static void createDirection(Dog dog) {
System.out.println("Член экипажа " + dog.getInfo() + " занимается созданием маршрута.");
}
public static void research(Cat cat) {
System.out.println("Член экипажа " + cat.getInfo() + " исследует ближайшие планеты.");
}
public static void createCrew() {
astronauts.add(new Human());
astronauts.add(new Human());
astronauts.add(new Dog());
astronauts.add(new Cat());
}
public static void printCrewInfo() {
System.out.println("На борт погружены члены экипажа: ");
for (Astronaut astronaut : astronauts) {
System.out.println(astronaut.getInfo());
}
}
}
Олег
35 уровень
Объясните пжл еще раз. Зачем мы при передачи в метод, например, pilot приводим к классу Human, если у нас в массиве итак объекты класса Human
Решен
Комментарии (6)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
OlunaSoftware Developer в MaibornWolff
23 февраля 2022, 13:04
В массиве astronauts же еще кошки и собаки есть, надо проверить перед вызовом метода
0
Олег
23 февраля 2022, 15:40
Я не про проверять. Я про приводить
0
KIRAРазработчик в prosv.ruExpert
23 февраля 2022, 09:31
У вас список астронавтов
Узнали конкретнее, что за астронавт и привели к нужному типу
+1
Олег
23 февраля 2022, 15:40
Так мы же проверкой отсеяли все лишнее
0
KIRAРазработчик в prosv.ruExpert
23 февраля 2022, 17:40
У класса Astronaut нет метода pilot()
Тип переменной говорит о том какие методы мы можем вызывать
Object object = new Human();
У такой переменной вы можете вызвать только методы класса Object, а если привести к типу Human то и вызвать сможете методы доступные у класса Human
+1
Олег
24 февраля 2022, 12:03
Спасибо
0