class SuperClass {
  private int n;
  /*
  public SuperClass() {
    System.out.println("SuperClass");
  }
  */
  
  public SuperClass(int _n) {
    System.out.println("SuperClass" + _n);
    this.n = _n;
  }
}class SubClass extends SuperClass {
  private int n;
  public SubClass() {
    System.out.println("SubClass");
  }
  public SubClass(int _n) {
    super(100);
    System.out.println("SubClass" + _n);
    this.n = _n;
  }
}public class TestSuper {
  public static void main(String[] args) {
    SubClass a = new SubClass(200);
  }
}
这个程序为什么去掉public SuperClass() 方法后会编译出错,事实上我并没有去调用它呀

解决方案 »

  1.   

    是这样的,在继承中,在子类的构造方法中,如果没有显式调用父类的构造方法,则默认调用父类的无参的构造方法,所以当你去掉SuperClass的无参的构造方法后,在子类初始化的时候,找不到父类的无参的构造方法,所以就报错!
      

  2.   

    可是这里有显式的调用super(100),是不是这个不算显式调用呢?