关于父类构造方法被调用时没有创建对象是认同的,可是父类构造方法被调用说明肯定有子类在创建对象不是吗?
所以不就是 → 构造函数调用一定会产生对象吗?
1
wsxyeah 2018-10-11 21:17:09 +08:00
啥语言
|
3
geelaw 2018-10-12 00:46:36 +08:00 via iPhone 1
对于 Java 来说,对象的身份是不会变化的,也就是调用 superclass 的构造器的时候,this 就已经是 the most derived class object 了。
调用构造器的时候,已经产生了对象了。 |
4
wsxyeah 2018-10-12 08:40:55 +08:00 2
JVM 上 new 一个对象包含 NEW 指令与 INVOKE_SPECIAL 指令调用,前者完成创建对象的操作,后者调用新创建出来对象的 <init> 方法(也就是用来初始化)。
当在子类的 constructor 里调用 super(xxx) 的时候只是调用了父类的 <init> 方法。 |
5
sbw 2018-10-12 08:54:35 +08:00 1
先申请空间,然后在这个空间上执行 ctor,如果申请空间失败直接 bad alloc。
构造函数被调用时,对象空间已经申请成功。 |