关于java继承条件下的构造方法调用

首先是测试代码:

class Grandparent 
{
    public Grandparent()
     {

            System.out.println("GrandParent Created.");
    
}
    public Grandparent(String string) 
    {

            System.out.println("GrandParent Created.String:" + string);
    
 }
}
class Parent extends Grandparent
{


    public Parent()
     {

            //super("Hello.Grandparent.");

            System.out.println("Parent Created");
    
       // super("Hello.Grandparent.");

      }

}
class Child extends Parent 
{


    public Child()
     {
    
        System.out.println("Child Created");

      }

}



public class TestInherits 
{


    public static void main(String args[])
     {

            Child c = new Child();
    
  }

}

在运行后,会出现这样的结果:

 这是我们的任务

要完成这个任务,首先对代码进行了修改:

    public Parent()
     {

            super("Hello.Grandparent.");

            System.out.println("Parent Created");
    
       super("Hello.Grandparent.");

      }

但发现编译器进行了报错:

 也因此发现,对super的调用必须是构造器中的第一个语句.

将后面的super语句删除后,再次运行有:

 可以看到,我们成功调用了父类中的另一个构造方法。

从这里我们可以学习到,super的调用必须是构造器中的第一个语句。即

原文地址:https://www.cnblogs.com/wushenjiang/p/11749818.html