В объектно-ориентированном программировании понижающее приведение () или «уточнение типа» () — акт приведения типа, ссылающегося на базовый класс, к одному из его производных классов.

В большинстве языков программирования, как правило, существует возможность выполнять проверку при помощи механизма RTTI, был ли приведён нужный тип ссылающегося объекта или порождён производный тип, и таким образом, происходит ошибка, если это не так.

Критика Множество людей выступает за избегание использования понижающего приведения, так как в соответствии с принципом подстановки Барбары Лисков дизайн объектно-ориентированного программирования, требующий подобного, считается некорректным. Некоторые языки, как например, OCaml, полностью запрещают понижающее преобразование.

Распространённым примером плохо продуманного дизайна являются контейнеры высших типов, как контейнеры в языке Java, присутствовавшие до введения , требовавшие понижающего приведения вложенных объектов для их повторного использования.

См. также Полиморфизм подтипов

Дополнительные источники Статья «Downcasting is a Code Smell» Джереми Ди. Миллера Статья «A downcasting tragedy» Джимми Богарда Статья «Prefer polymorphism over instanceof and downcasting» Билла Веннерса Статья «Downcasting in C#» Скотта Лайсла Документ «Multiple downcasting techniques» Наследование в Java — в статье кратко рассматриваются примеры повышающего и понижающего приведения и приводятся примеры их использования. Идентификация типов во время выполнения

Категория:Объектно-ориентированное программирование