这段代码定义了三个类:Father(父类)、Child(子类)和Test(测试类)。
首先,main方法执行new Child();时,会调用子类的构造函数。
父类
子类
在子类Child的无参构造函数中,首先调用了this("dd"),这实际上是调用了Child类的有参构造函数
但是,在子类Child的有参构造函数中,又调用了super("dd"),这是在调用父类Father的有参构造函数
当调用super("dd")时,父类Father的有参构造函数会被执行,并打印出“父类有参构造函数”。
然后,Child的有参构造函数会继续执行,并打印出“子类有参构造函数”。
最后打印出“子类无参构造函数”
补充:
子类的有参构造数没有super调用父类,则当前会依次打印“父类无参构造函数”、“子类有参构造函数”、“子类无参构造函数”。
这是因为Java编译器会默认调用父类的无参构造函数