Когда объект конкретизируется, только не-статические данные на самом деле «Создан», вместе с ссылкой на тип объекта, который его создал.
Ни один из методов не копируется.
«Ссылка» на класс, который его создал, на самом деле является таблицей отправки указателя. Существует один указатель для каждого метода, доступного для класса. Указатели всегда указывают на «правильную» (обычно самую низкую/наиболее специфичную в дереве объектов) реализацию метода.
Таким образом, если у вас есть вызов верхнего уровня другому методу, но другой метод был переопределен, будет вызван переопределенный метод, потому что это то, где указатель в таблице указывает. Из-за этого механизма не требуется больше времени для вызова переопределенного метода, чем для верхнего уровня.
Таблица указателей + переменные-члены являются «экземпляром» класса.
Переменная проблема связана с совершенно другим механизмом «пространства имен». Переменные вообще не «подклассифицированы» (они не входят в таблицу рассылки), но общедоступные или защищенные переменные могут быть скрыты локальными переменными. Все это делается компилятором во время компиляции и не имеет ничего общего с вашими экземплярами экземпляра среды выполнения. Компилятор определяет, какой объект вы действительно хотите, и ссылается на это в свой код.
Правила обзора, как правило, относятся к «ближайшей» переменной. Все, что дальше с тем же именем, будет просто проигнорировано (затенено) в пользу более близкого определения.
Чтобы получить более конкретную информацию о распределении памяти, если вы заинтересованы: все «ОБЪЕКТЫ» выделены в «Куче» (на самом деле что-то удивительно более эффективное и красивое, чем настоящая куча, но такая же концепция.) Переменные всегда указатели - Java никогда не будет копировать объект, вы всегда копируете указатель на этот объект. Вычисления указателей переменных для параметров метода и локальных переменных выполняются в стеке, но хотя переменная (указатель) создается в стеке, объекты, на которые они указывают, до сих пор не выделяются в стеке.
У меня возникает соблазн написать пример, но это уже слишком долго. Если вы хотите, чтобы я набирал пару классов с расширением отношений и как их методы и данные влияют на генерируемый код, я могу ... просто спросить.
Вы по-прежнему готовы написать пример? Если да, то, пожалуйста, сделайте это. – Touchstone 2015-06-09 08:17:40