Разница между восходящим и нисходящим преобразованием типов в объектно-ориентированном программировании заключается в направлении преобразования:
  - Восходящее преобразование (upcasting) — это преобразование от подкласса внизу к суперклассу вверху иерархии.                                                                          blog-house.pro                       Оно осуществляется автоматически, потому что объект подкласса также представляет собой объект суперкласса.                                                                          blog-house.pro                      
  - Нисходящее преобразование (downcasting) — это преобразование от суперкласса к подклассу.                                                                          blog-house.pro                       Автоматически оно не выполняется, в этом случае нужно явно использовать операцию преобразования типов.                                                                          blog-house.pro                      
  
 Таким образом, восходящее преобразование безопасно, так как это переход от конкретного типа к более общему, в то время как нисходящее преобразование может привести к ошибке, если преобразование невозможно на этапе выполнения.                                                                          it.rfei.ru                                                                                               blog-house.pro