вопрос как работает это: public void swim() {
OceanAnimal currentAnimal = (OceanAnimal) getCurrentAnimal(); // эта строчка, смущает getCurrentAnimal()
currentAnimal.displaySwim();
}
private void displaySwim() {
System.out.println(getCurrentAnimal().getClass().getSimpleName() + " is swimming");
}
abstract Swimmable getCurrentAnimal();
}
Краснов Алексей
31 уровень
задача решена, вопрос остался важный!
Архивный
Комментарии (11)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Краснов Алексей
29 января 2021, 11:57
Сможете обьяснить как работает логика этой строки: OceanAnimal currentAnimal = (OceanAnimal) getCurrentAnimal();
0
hidden #2322530
29 января 2021, 11:58
в переменную currentAnimal типа OceanAnimal присвоить ссылку на объект, полученный с помощью метода getCurrentAnimal() и приведенный к типу OceanAnimal
+3
Краснов Алексей
29 января 2021, 12:07
прикрепляю полное решение задачи и уточняющий вопрос: как мы получаем обьект "с помощью метода getCurrentAnimal()"?
0
hidden #2322530
29 января 2021, 12:09решение
прочитай тело метода. что он возвращает? return this
то есть он возвращает ссылку на объект, у которого ты вызываешь метод swim()
+2
Краснов Алексей
29 января 2021, 12:16
теперь въехал))) сначала валидатор пропустил через null, потом уже this использовал. Т.е. нам метод getCurrentAnimal() и this нужно чтобы передать ссылку на соответсвующий объект?
0
hidden #2322530
29 января 2021, 12:19
да. как переводится с английского
get current animal
0
Краснов Алексей
30 января 2021, 07:56
как доп. подсказка идёт, понятно, вна одно сообщение выше: "то есть он возвращает ссылку на объект, у которого ты вызываешь метод swim()", тут же речь не про метод swim(), а про всё тот же getCurrentAnimal()?
0
hidden #2322530
30 января 2021, 08:18
да. про него . ведь метод swim() ты указываешь объект, у которого он вызывается, а у getCurrentAnimal нет. значит он вызывается у того же объекта, у которого ты вызываешь swim()
+1
Краснов Алексей
30 января 2021, 08:53
не понимаю логическую связь от this до swim():
OceanAnimal currentAnimal = (OceanAnimal) getCurrentAnimal();
"... OceanAnimal присвоить ссылку на объект, полученный с помощью метода getCurrentAnimal() ...." этот объект будет типа Swimmable?
0
hidden #2322530
30 января 2021, 09:14
этот объект будет типа Swimmable?
да, метод getCurrentAnimal возвращает же тип Swimmable.
но метод displaySwim приватный. и доступен только для объектов типа OceanAnimal. для этого используется приведение.
+3
hidden #2322530
29 января 2021, 11:50
и что смущает?
0