SubClass sc1 = new SubClass();调用的是SuperClass(int n)这个构造方法;确实你这句话没有错。
我把   SuperClass()注视掉;你确定就只把这个默认构造方法注释掉就不能运行了,我刚刚试了一下你的代码,在把默认构造方法注释后是能运行的。因为你调用的是父类的有参构造,不会调用无参构造,所以程序不会报错。是不是你哪里改了代码。或者是描述没有说清楚。

解决方案 »

  1.   

    是啊 视屏里面也是 我觉得很奇怪啊 不对 他调的是[SuperClass(int n) 不管默认的事情啊
      

  2.   

    你把SuperClass()注视掉可以运行吗 我的运行不了啊
      

  3.   

    将Main方法中的类实例化改成:
    SubClass sc1 = TestSuperSub .new SubClass();
    这样就可以了,希望可以帮到你
      

  4.   

    因为父类已经有了带参构造了,所以你把无参构造注释掉,不会有默认的无参构造,而子类中有无参构造,如果没有用super(),那么就会调用父类的默认无参构造,因为父类已经没有了默认的无参构造,所以会报错。
      

  5.   

       SubClass(int n) {
         //super();
            System.out.println("SubClass(" + n + ")");
            this.n = n;
        }
    这里会先调用父类的默认无参构造,你的父类还有默认的无参构造吗????