为什么compute_2无法继承compute:
class compute

  int i1;
  int i2;
  compute(int m,int n)
  {  
     i1=m;
     i2=n;
  }
  int sum()
  {
     return i1+i2;
  }
  int minus()
  {
     return i1-i2;
  }
  
}
class compute_2 extends compute
{
   int multiply()
   {
      return i1*i2;
   }
   double divide()
   {
      return i1/i2;
   }
}
编译compute_2.java时报错提示是:compute_2.java:1:compute(int,int) in compute cannot be applied to () class compute_2 extends compute于是我把compute的构造函数注释掉以后又可以编译了,不知道为什么会这样啊?
麻烦各位了!!

解决方案 »

  1.   

    子类构造函数会默认调用父类无参数构造函数
    而你的父类没有无参数构造函数
    在子类中添加
    compute(int m,int n)
      {  
        super(m,n);
      }
    就可以了
      

  2.   

    对要知道,java的类中,如果你没重载构造方法,那它会自动的给你一个但是当你写了一个带参数的构造方法之后,它就不再给你提供无参的了所以你要是还想用无参的话,只能自己写一个在compute中加上
    compute()
      {  
        
      }也能行
      

  3.   

    非常感谢两位,不过liujun999999兄,应该是:
    compute_2(int m,int n)
      {  
        super(m,n);
      }
    才对吧?而lixin199036061兄的方法虽然可以使compute_2的编译通过,不过调用compute_2时会出错,提示:cannot resole symbol
    我觉得奇怪的是再加个空的构造函数,岂不是有两个构造函数了吗,可以这样的?