Вы создаете один объект (в куче) с всеми полями, объявленными в иерархии типов.Я считаю, что это зависит от реализации, в каком порядке они хранятся, но я не удивлюсь, увидев все поля в базовом классе, затем поля, объявленные в производном классе, и т. Д. (Таким образом, смещение дляПоле для любого данного объявленного типа всегда будет одинаковым независимо от типа времени выполнения.)
Таким образом, структура памяти может выглядеть примерно так:
- Заголовок объекта / блок синхронизации
- Указатель таблицы методов
- Поле
i
- Поле
j
Но ответить на самую прямую частьвашего вопроса: все значения, которые составляют состояние объекта, хранятся вместе, независимо от того, в каком типе объявлено каждое поле.