这个答案是a bname b

img


我想问一下,当创建子类对象的时候,使用子类的构造方法,默认不是先使用父类的构造方法吗,执行B(){this("abc")}这句话之前没有super()吗

有的,子类中如果 调用父类 无参的构造方法, super(); 语句是可以省略

【以下回答由 GPT 生成】

执行B b = new B();会输出以下内容:

a
bname
b

解释: - 首先,创建B对象时会先调用B类的构造方法。 - B类的构造方法B()中首先调用了this("abc"),即调用B类的另一个构造方法B(String name)。 - 在B(String name)构造方法中,会先输出bname。 - 然后,回到B()构造方法继续执行,输出b

此外,父类A的构造方法(无参构造方法A())会在B类的构造方法中默认调用,即在执行B()构造方法之前,会隐式调用super()。但是在这个例子中,我们在B类的构造方法中手动调用了this("abc"),因此不会再默认调用父类的无参构造方法,而是直接调用B类自己的构造方法B(String name)


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^