Скажем, у меня есть эта часть кода:
class Animal {
int legs = 4;
int head = 1;
}
public class Dog extends Animal {
public static void main (String []args) {
Dog dog = new Dog();
}
}
Мне известно, что super()
неявно помещается в первую строку конструктора no-args, поэтому я знаю, что будет выполнен конструктор Animal
, и поэтому будет задана переменная экземпляра Animal
.
С этой целью я хотел бы понять, если после того, как эти переменные будут инициализированы супер-конструктором (Animal
), эта переменная экземпляра будет храниться там в объекте Animal или скопирована в подкласс (Dog
),
В первом случае объект Animal
будет неявно создаваться с помощью super();
, и всякий раз, когда экземпляр Dog
должен будет получить доступ к одной из этих переменных, будет сделан доступ к переменным, хранящимся в экземпляре Animal
(созданный на фоне). Или второй случай, если объект Animal будет временно создан, вся переменная экземпляра (в Animal
) скопирована в экземпляр Dog
, а затем удалит созданный экземпляр Animal
.
Я лично считаю, что, например, объект Dog
будет напрямую связан с объектом Animal
, который напрямую связан с объектом.
Это так?