假设我有这段代码:
class Animal {
int legs = 4;
int head = 1;
}
public class Dog extends Animal {
public static void main (String []args) {
Dog dog = new Dog();
}
}
我知道super()
隐式放置在无参数构造函数的第一行,所以我知道Animal
构造函数将被执行,因此Animal
将设置 's 实例变量。
为此,我想了解,一旦这些变量已由超级构造函数 ( Animal
) 初始化,这些实例变量是否将保留在 Animal 对象中或复制到子类 ( Dog
)。
在第一种情况下,对象Animal
将被隐式实例化,super();
并且每当实例Dog
需要访问其中一个变量时,它将访问保存在实例中的变量Animal
(在后台创建)。或者第二种情况,如果对象 Animal 将是临时创建的,则将所有实例变量 (in Animal
) 复制到Dog
实例中,然后删除Animal
临时创建的实例。
我个人认为,例如,一个Dog
对象将直接链接到一个Animal
直接连接到一个对象的对象。
是这样吗?