现有一段代码,如下
public class Test3{   public static void main(String [] args)
  {   B b= new B("test"); } 
}class B extends A{  B(String s){  System.out.println(s); }
  B(String s, String t){ this(t+s+"3"); }  B(){ super("4");}}class A{  public A(String s){ System.out.println(s);}
  public A(String s, String t) { this(s+t);}
  public A(){ this("1","2");}
}答案还是公布一下吧:  先打印123,然后打印test
有疑问的大家讨论讨论。

解决方案 »

  1.   

    我质疑,答案应该是:12
    test初始化b的时候会先调用A的无参构造函数A()
    然后由于A()中的this("1","2")调用到A(String s, String t)
    然后由于A(String s, String t)中的this(s+t)调用A(String s)
    打印出12然后调用B的带单个参数的构造函数,即B(String s)
    打印出test
      

  2.   

    明明是先打印12,然后打印test
      

  3.   


    直接用cmd运行就可以了
    12
    test
      

  4.   

    main-->A()-->A(String s, String t)-->A(String s) -->(String s)
      

  5.   

    12
    test  A()-->A("1","2")-->A("12")
    B("test")什么垃圾教科书啊