Высший типВысший тип (универсальный супертип) — тип, применяемый в ряде теорий типов и языков программирования, который содержит каждый возможный объект системы. Высший тип иногда именуется универсальным супертипом, то есть все остальные типы в любой отдельно взятой системе типов являются подтипами самого верхнего. Двойственное понятие — низший тип (универсальный подтип), не содержащий никаких возможных значений или подтипов. Поддержка в языках программированияЯзыки программирования с явной поддержкой высшего типа. Большинство объектно-ориентированных языков программирования включают универсальный базовый класс:
C++ выделяется среди объектно-ориентированных языков тем, что не имеет универсального супертипа. Тип «указатель на void» может принимать указатель на любой объект, даже несмотря на то, что void-тип сам по себе не является универсальным типом, а лишь единичным типом. Необъектно-ориентированные языки обычно не имеют универсального супертипа (или полностью поддерживают полиморфизм подтипов). Common Lisp является исключение в том плане, что его встроенные типы образуют иерархию типов, даже когда его объектная система CLOS не используется. В большинстве языков программирования высший тип — это абстрактный тип, который не содержит элементов, не являющихся элементами некоторого (объявленного) подтипа. В данном случае Java является исключением: выражение Высший тип используется как обобщённый тип, в первую очередь в языках без поддержки параметрического полиморфизма. Например, до добавления обобщённых типов в Java 5, коллекция классов в библиотеке Java (исключая массивы Java) поддерживали ссылки на тип В языках со структурной системой типов высший тип — это пустая структура. Например, объекты в OCaml структурно типизированы; пустой тип объекта (тип объекта, не имеющего методов), « Высший тип может также быть представлен как неявный тип в языках с нестатической типизацией. Языки с динамической типизацией часто поддерживают понижающее приведение (или «уточнение типа» (type refinement)) для предоставления программисту возможности указывать более специфический тип для объекта в ходе выполнения программы. Необходимо отметить, что понижающее приведение из типа Литература
|