new B()的时候,如果在B(){.....}中没有写super(....)/super()的话,会默认调用super(),同理,A()中也会调用A自己的super(...),super(...)就是调用父类的构造函数,
如果你写了super的话,试着在它前面随便加上一点句子,你就会得到一个编译错误,提示你super必须放在构造器重第一个位置。java这样规定的原因就是强制字类在构造的时候先构造父类。

解决方案 »

  1.   

    同意。构造子类对象的时候先要调用父类构造器,这个调用是自动的。
      

  2.   

    再补充一点,如果构造函数有参数,就必须自己调用父类的构造函数
      

  3.   

    在两个构造函数里打印一点东西,很容易可以看出来
      

  4.   

    建议采用楼上所说的方法,在两个构造函数中都输出一些东西,就可以看出来它是否调用了,并且可以知道是先调用谁,后调用谁。
      

  5.   

    如果让系统自动调用父类构造函数的话
    如上面B调用A的构造函数时,调用的是无参构造函数
    如果你没有这个无参构造函数,系统会报错的