![]() |
![]() |
Экземпляры объектов и статические типыОбъект в его классическом ООП-понимании имеет две ипостаси:
Очевидно, что структур 2, отталкиваясь от одного класса 1, можно создать сколько угодно. Структура 2 часто называется "экземпляр класса" и именно она является тем самым "истинным объектом". Классы же являются только шаблонами, по которым создаются эти объекты. Но классы, сами не будучи строгими объектами, определяют всё поведение объектов - два экземпляра, созданные из одного класса будут различаться только адресами в памяти. И это будут - разные объекты. Два же полностью совпадающих класса в точности равны, у классов нет экземпляров, зато есть имена. Поэтому классы правильнее бы называть "статическими типами" подчёркивая этим, что тип определяется не самим объектом, но его шаблоном - во время жизни в памяти объект может изменяться, а класс - уже нет. Развёрнутый в памяти объект однозначно характеризуется его адресом. Не развернутый, а только могущий быть развернутым объект адреса не имеет, поэтому статические типы имеют имена, а экземпляры статических типов - адреса. |
|