Преобразование от потомка к предку называется восходящим, от предка к потомку — нисходящим.
Нисходящее преобразование должно указываться явно с помощью указания нового типа в скобках.
Преобразование типов в Java может быть либо нисходящим (downcasting), либо восходящим (upcasting).
Нисходящее преобразование происходит, когда объект класса преобразуется в объект класса-наследника. Например:
Animal animal = new Cat();
// upcasting, преобразуем объект класса Cat в объект класса Animal
Cat cat = (Cat) animal;
// downcasting, преобразуем объект класса Animal обратно в объект класса Cat
Восходящее преобразование происходит, когда объект класса-наследника преобразуется в объект класса-родителя. Например:
Cat cat = new Cat();
// создаем объект класса Cat
Animal animal = cat;
// upcasting, преобразуем объект класса Cat в объект класса Animal
Во время нисходящего преобразования необходимо явное приведение типа, т.к. объект класса-наследника содержит дополнительные методы и поля, которых нет в родительском классе. Поэтому перед использованием этих методов и полей необходимо преобразовать объект к типу класса-наследника.
1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions
Tелеграмм канал: https://t.me/DEBAGanov
Мое резюме: https://github.com/DEBAGanov