WikiSort.ru - Программирование

ПОИСК ПО САЙТУ | о проекте

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

Поддержка в языках программирования

Некоторые типизированные языки программирования обеспечивают явную поддержку высшего типа.

Большинство объектно-ориентированных языков программирования включают в себя универсальный базовый класс:
НазваниеЯзыки
ObjectSmalltalk, Java, JavaScript, Ruby и некоторые другие. В Java он часто обозначается с префиксом, указывающим на пакет, например, java.lang.Object. Также стоит отметить, что Object не является супертипом для примитивных типов в Java; однако, начиная с Java 1.5, упаковка (autoboxing) позволяет выполнять явное или неявное приведение примитива к Object, например, ((Object)42).toString().
ObjectObjective-C. В OpenStep и Cocoa, которые являются самыми популярными фреймворками на базе языка, NSObject — как правило это универсальный базовый класс. Можно создавать новые корневые классы просто не указывая родительские классы при определении, но это крайне не рекомендуется. Высшим типом для указателей на объект является id.
System.ObjectC#, Visual Basic .NET и прочие языки платформы .NET Framework
objectPython, начиная с унификации типов/классов в версии 2.2.
GObjectGlib
TObjectObject Pascal.
tCommon Lisp и множество прочих диалектов Lisp.
AnyScala. , X10.
GENERALEiffel.
UNIVERSALPerl 5.
VariantVisual Basic вплоть до 6-й версии.

C++ выделяется среди объектно-ориентированных языков тем, что не имеет универсального супертипа. Тип «указатель на void» может принимать указатель на любой объект, даже несмотря на то, что void-тип сам по себе не является универсальным типом, а лишь единичным типом.

Необъектно-ориентированные языки обычно не имеют универсального супертипа (или полностью поддерживают полиморфизм подтипов). Common Lisp является исключение в том плане, что его встроенные типы образуют иерархию типов, даже когда его объектная система CLOS не используется.

В большинстве языков программирования высший тип — это абстрактный тип, который не содержит элементов, не являющихся элементами некоторого (объявленного) подтипа. В данном случае Java является исключением: выражение new Object() вполне корректно.

Высший тип используется как «обобщённый» (generic) тип, в первую очередь в языках без поддержки параметрического полиморфизма. Например, до добавления обобщённых типов в Java 5, коллекция классов в библиотеке Java (исключая массивы Java) поддерживали ссылки на тип Object; при этом способе любой несобственный тип может быть добавлен в коллекцию. Высший тип также часто используется для поддержки объектов неизвестного типа.

В языках со структурной системой типов высший тип — это пустая структура. Например, объекты в OCaml структурно типизированы; пустой тип объекта (тип объекта, не имеющего методов), «< >», — высший тип для объектных типов. Любой объект в OCaml может быть явным образом приведен к этому типу, хотя результат может быть довольно бесполезным.

Высший тип может также быть представлен как неявный тип в языках с нестатической типизацией. Языки с динамической типизацией часто поддерживают понижающее приведение (или «уточнение типа» (type refinement)) для предоставления программисту возможности указывать более специфический тип для объекта в ходе выполнения программы. Необходимо отметить, что понижающее приведение из типа void * в языке C++ не может быть выполнено в «безопасном» стиле, когда неудачное приведение выявляется средой языка.

Примечания

Ссылки

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии