[求助]一个子类中显示初始化,是在父类完成初始化前还是后
一个对象实例化过程,以Person p = new Person();为例:
1. JVM会读取指定的路径下的Person.class文件,并加载进内存,并会先加载Person的父类(如果有直接的父类的情况下)。
2. 在内存中开辟空间,并分配地址。
3. 并在对象空间中,对对象的属性进行默认初始化。
4. 调用对应的构造函数进行初始化。
5. 在构造函数中,第一行会先到调用父类中构造函数进行初始化。
6. 父类初始化完毕后,再对子类的属性进行显示初始化。
7. 再进行子类构造函数的特定初始化。
8. 初始化完毕后,将地址值赋值给引用变量。
这是老师最开始讲的,讲的时候没什么感觉跟这就下来了,后来过了好久再回来复习的时候突然感觉又有几个地方看不懂了,还请各位前辈指点一下迷津
在这之前自己写了段代码试了下,父类中定义个 name,age子类中也定义了一个name,age,结果new一个子类传的空参,打印显示的是子类的name,age
这是说明是在父类进行完一系列初始化之后再对子类进行显示初始化赋值吗? 还是说我在子类中定义的name,age和父类中定义的name,age不是同一
个变量
问题 1: 在第3步 3.并在对象空间中,对对象的属性进行默认初始化。这句话之前我能理解,可第4步调用对应的构造函数.对父类进行一系列初始化之后
再对子类进行显示初始化赋值,这我就有点懵逼了,在调用对应的构造函数之前,子类不是应该已经完成了显示初始化吗? 正常的步骤不应该是1.
默认初始化,2. 显示初始化,3.构造函数初始化吗? 为什么这上面写的是在父类初始化完毕后,再对子类进行显示初始化?
2: 在第7步 7. 再进行子类构造函数的特定初始化。这之前不是已经通过子类的构造函数对父类进行初始化了吗,怎么又再进进行子类构造函数的特定
初始化...有点懵