super指向*父类*,如果*父类*的构造函数中也super了的话,当然会再调用*爷类*了:)

解决方案 »

  1.   

    如果你继承了一个类后,当你创建这个类的对象时,在初始化中,会自动调用其父类的构造函数
    当你new test3时,先调用test3的构造函数,因为test3 extends test2,所以先调用test2的构造函数,test2又extends test1,所以对test1的构造函数就行调用.
    执行完test1构造函数中的主体后,执行test2构造函数里的主体,最后执行test3的主体.
      

  2.   

    类的继承关系是这样的:子类在构造函数中没有明确使用super(...)的时候会缺省调用super(),这个关系一直上延,你试试下面的程序就明白了。
    class test0{
    public test0() {
    System.out.println("test0");
    }
    }
    class test1 extends test0{
    public test1() {
    //super();
    System.out.println("test1");
    }
    }
    public class test extends test1{
    public test() {
    //super();
    System.out.println("test");
    }
    public static void main(String args[]) {
    test t=new test();
    }
    }
    你可以把super()前的注释取消,结果都是一样的。