Java 在这种情况下调用super的构造函数是多余的吗?
我一直认为,当创建带有子类的对象时,我们需要显式地使用superarguments列表来调用超类的构造函数。但是我做了一个实验,发现即使不使用super,也会自动调用super类的构造函数。这是真的吗 如果这是真的,什么时候是超级冗余,什么时候不是Java 在这种情况下调用super的构造函数是多余的吗?,java,class,super,sup,Java,Class,Super,Sup,我一直认为,当创建带有子类的对象时,我们需要显式地使用superarguments列表来调用超类的构造函数。但是我做了一个实验,发现即使不使用super,也会自动调用super类的构造函数。这是真的吗 如果这是真的,什么时候是超级冗余,什么时候不是 class Parent { public Parent() { System.out.println("Super Class"); } } class Child extends
class Parent
{
public Parent()
{
System.out.println("Super Class");
}
}
class Child extends Parent
{
public Child()
{
super(); //Is this redundant?
System.out.println("Sub Class");
}
}
public class TestClass
{
public static void main(String[] args)
{
new Child();
}
}
输出与超级;儿童班:
Super Class
Sub Class
Super Class
Sub Class
输出无超调;儿童班:
Super Class
Sub Class
Super Class
Sub Class
默认情况下,super添加到所有子类中,因此不需要显式调用它
可以通过使用superargs调用超类的重载构造函数或使用thisargs调用同一类的重载构造函数来重写默认行为
假设super类没有参数构造函数,并且您已经创建了其他构造函数,在这种情况下,您必须显式调用superargs以解决编译时错误。如有疑问,请始终咨询: 如果构造函数体不是以显式构造函数调用开始,并且所声明的构造函数不是原始类对象的一部分,则构造函数体隐式以超类构造函数调用开始;,对其直接超类的构造函数的调用,不带任何参数
super exist hidden即使您不调用也必须调用super构造函数,当您需要向其传递参数时,否则如果您不调用它,则会隐式调用不带参数的super。因此,当super类的构造函数中有参数时,我们显式调用?