«Тип» - это набор, члены («объекты») которого имеют дискретное конечное представление и полезный набор общих атрибутов.
Фактическое представление объекта в памяти не обязательно является частьюопределение типа.То есть, что один объект может иметь несколько представлений в памяти.Важно то, что объект не может быть бесконечным или аналоговым.
Общие атрибуты типа могут быть чем угодно.В объектно-ориентированной системе атрибуты будут включать (на низком уровне) данные и поведение.Уведомления о событиях также распространены.Некоторые атрибуты могут быть условными без нарушения определения типа (если логический атрибут X равен true, тогда атрибут Y также существует), если правила согласованы для всех объектов в типе.
«Подтип»подмножество типа, члены которого имеют более широкий набор общих атрибутов.
Такой подход к типам очень отличается от того, что вы задаете в вопросе, и я считаю, что это различие важно.
Если кто-то видит типы как представление в памяти, то это представление будет рассматриваться как существенная особенность типа, и оно будет восприниматься как должное.Взаимодействие будет достигаться за счет низкоуровневых преобразований и реинтерпретации существующих байтовых последовательностей.Это может привести к проблемам в некоторых случаях, когда это представление изменяется.
Если, однако, каждый видит типы с точки зрения их атрибутов, тогда преобразования из одной системы типов в другую будут включать высокоуровневые преобразования полей данных междусоответствующие объекты.Определение совместимости объектов будет основано на их существенных атрибутах, и проблемы станут менее вероятными.
Даже в мире взаимодействия не следует полагаться на знание внутренних деталей типов.То есть возможности реализации типа, которые не являются частью определения этого типа, не должны использоваться так, как если бы они были частью этого типа.