Добрый день!
Хотелось бы получить немного теории и понять один нюанс в решении задачи.
В метода runWorkingProcess(),в цикле for-each происходит проход по каждому объекту типа Astronaut.
И к каждому из этих элементов подставляется instanceof в условиях if().
К примеру,
if(astronaut instanceof Human)
{
pilot( (task1703Human) astronaut);
}
Как я понял Human - указатель на класс, а astronaut это объект при проходе for-each ArrayList<Astronaut>.
И суть этой проверки в том, что к указателю подставляется объект и если инициализация проходит успешно, то true и false в противном случае.
Но в то же время каждый объект ArrayList<Astronaut> ,при добавлении, имеет тип родительского класса Astronaut. И таким образом уже становиться невозможным проинициализировать указатель с более низшим типом класса по иерархии объектом высшего(родительского класса).
В лекции данное свойство описано так:
В Java есть специальный оператор — instanceof, который позволяет проверить, можно ли сохранить объект определенного типа в переменную определенного типа.
У меня на этот счет две теории:
Первая - astronaut проходит по наследованию внутрь иерархии, пока не встретит нужный указатель.
Вторая - это вообще не указатель и объект, а что -то другое.
Помогите разобраться :) Заранее спасибо!