子类会继承父类的构造方法
class testsuper
{
public testsuper()
{
System.out.println("120");
}
}
public class Test extends testsuper{
public Test()
{
System.out.println("110");
}
public static void main(String[] args) {
Test test=new Test();
}
}
这里的输出为120 110
子类会先调用父类的构造方法,当然子类可以用super()来显示调用父类的构造方法,如果不写,默认调用父类无参数的构造方法。
等价于
public Test()
{
super();
System.out.println("110");
}
但是如果父类只有有参数的构造方法在子类没有用super()显示调用构造方法,那么编译器会报错
class testsuper
{
public testsuper(String s)
{
System.out.println("120");
}
}
public class Test extends testsuper{
public Test()
{
super("s");
System.out.println("110");
}
public static void main(String[] args) {
Test test=new Test();
}
}
需要引用父类才不会报错。
至于原因可能与程序的安全与接口有关,程序不应该给你一个不明确定义的方法,所以默认在子类前加载方法。