无关。 点击复制后,将打开C知道体验页 | 当对象被实例化后,堆内存先开辟一块空间给子类对象,然后先隐式初始化父类普通变量,然后是子类普通变量,随后子类构造方法在栈中被开辟内存,然后父类构造方法在super语句执行后被开辟内存,接着显式初始化父类普通变量和构造方法,父类构造方法弹栈之后再回到子类构造方法,进行子类显式初始化和构造方法的执行,最后子类构造方法弹栈结束,对象实例化完成。以上顺序有误,请指正并修改
时间: 2023-05-28 21:04:40 浏览: 99
当对象被实例化后,堆内存先开辟一块空间给子类对象,然后先隐式初始化父类普通变量,然后是子类普通变量,随后父类构造方法在栈中被开辟内存,然后父类构造方法在super语句执行后被执行,接着显式初始化父类普通变量,父类构造方法执行完成后再回到子类构造方法,进行子类显式初始化和构造方法的执行,最后子类构造方法弹栈结束,对象实例化完成。
相关问题
当对象被实例化后,堆内存先开辟一块空间给子类对象,然后先隐式初始化父类普通变量,然后是子类普通变量,随后子类构造方法在栈中被开辟内存,然后父类构造方法在super语句执行后被开辟内存,接着显式初始化父类普通变量和构造方法,父类构造方法弹栈之后再回到子类构造方法,进行子类显式初始化和构造方法
的执行,最后子类构造方法弹栈结束,对象实例化完成。
需要注意的是,如果子类构造方法没有显式调用父类构造方法,则会默认调用父类的无参构造方法,如果父类没有无参构造方法,则会编译报错。此外,如果父类构造方法中有耗时操作或者复杂的初始化操作,可能会影响子类对象的实例化速度。因此,在设计类的时候,需要考虑构造方法的执行顺序和耗时操作的影响。
阅读全文