class Parent
{
public Parent()
{
System.out.println("调用Parent的构造方法");
this.show();
}
public void show(){
System.out.println("调用Parent的show方法");
}
}
class Child extends Parent
{
public Child()
{
//super();
System.out.println("调用Child的构造方法");
}
public void show()
{
System.out.println("调用Child的show方法");
}
}
public class Test
{
public static void main(String[] args)
{
Parent parent = new Child();
System.out.println("------------------------");
parent.show();
}
}
派生类通过new构造方法创建对象,在调用构造方法时,默认执行的第一行是super();即调用父类的无参构造方法。
如果父类没有无参构造方法,系统会调用父类的默认无参构造方法(也就是一个方法体为空的无参构造方法);如果父类存在有参的构造方法同时没有无参构造方法,子类的构造方法就不能调用父类无参构造方法,表现就是编译不能通过了。你的代码中3掉用构造方法时,默认执行的第一行是super(),所以出现这种情况
希望对你有所帮助。 |