Понимание разницы между типами и представлениями - PullRequest
1 голос
/ 17 апреля 2011

В этой статье говорится о разнице между типами и классами. Поскольку я работал только с языками, которые рассматривают оба языка как идентичные, пожалуйста, предложите материал / языки программирования, которые научат меня разнице.

Ответы [ 3 ]

2 голосов
/ 17 апреля 2011

Разница не правильное слово - классы, безусловно, являются типами.Но не все типы являются классами.Также обратите внимание, что слово «класс» довольно расплывчато - это может быть просто тип кортежа (без операций, кроме конструкции и проекции - так сказать, структуры C) или, с другой стороны, класс, содержащий толькометоды, но без состояния.

1 голос
/ 17 апреля 2011

Sather - самый старый из известных мне языков, который рассматривает типы и классы отдельно.Тем не менее, это не совсем строго, поскольку можно по-прежнему использовать класс в качестве типа переменной (я думаю), просто нельзя подтипировать его.

Это не сильно отличается от того, что позволяет делать C ++:Вы можете использовать чисто абстрактные классы для определения типов и иметь все конкретные классы, реализующие их с помощью открытого наследования, но делить на подклассы друг друга с помощью частного наследования.Затем вы используете абстрактные классы для переменных типов, используя конкретные классы только в выражениях конструктора.

Java позволяет вам делать более или менее то же самое, определяя типы с использованием интерфейсов и реализаций с использованием классов, но потому что нет закрытыхнаследование, нет способа скрыть отношения наследования классов.

Имеет ли это какой-либо смысл вообще?

0 голосов
/ 17 апреля 2011

Java, предварительная автобокс. int и Integer оба типа, но только последний является классом.

...