第一个类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:1:Compute<int,int> in Compute cannot be applied to <>
class Compute_2 extends Compute{
^
1 error
请问高手如何解决?
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:1:Compute<int,int> in Compute cannot be applied to <>
class Compute_2 extends Compute{
^
1 error
请问高手如何解决?
解决办法:给Compute_2写一个构造器。
Compute_2(int m,int n)
{
super.(m,n);
}或者给基类写一个缺省构造器,这是理论上解决的办法,但实际上不会使用。因为他只能赋予导出类固定的值。Compute()
{
i1=1;i2=1;
}
class Compute_2 extends Compute{
Compute_2(int m,int n){
super(m,n);正确初始化父类//而且这里也必须先调用supert(m,n);否则提示出错
}
int multiply(){
return i1*i2;
}
double divide(){
return i1/i2;
}
}
{
super.(m,n);
}但是我刚刚试验,在Compute_2.java 中加入,结果还是出错:
Compute_2.java:3:<identifier> expected
super.(m,n);
^
Compute_2.java:3:not a statement
super.(m,n);
^
2 error
请再帮忙!
super();来调用它父类的构造函数,如果你的子类没有构造函数,系统也会自动生成构造函数,函数体也是super();以此来调用它父类的构造函数。你程序的父类没有无参构造函数,所以子类构造函数中的
super();(这是系统自动帮你加上的,而且在构造函数的第一句)就会找不到父类的无参构造函数,所以会报错。你可以在父类中写一个无参构造函数,函数体为空,那样应该不会有错了。
int i1;
int i2;
Compute(int m,int n){
i1=m;
i2=n;
}
Compute()
{ }
int sum(){
return i1+i2;
}
int minus(){
return i1-i2;
}
}
int i1;
int i2;
Compute02(int m,int n){
i1=m;
i2=n;
}
Compute02(){
}
int sum(){
return i1+i2;
}
int minus(){
return i1-i2;
}
}
子类:class Compute_02 extends Compute02{
int multiply(){
return i1*i2;
}
double divide(){
return i1/i2;
}
}主类:class Run_compute02{
public static void main(String[] arguments){
Compute_02 obj=new Compute_02(5,10);
System.out.println("5和10之和等于:"+obj.sum()+"\n");
System.out.println("5和10之差等于:"+obj.minus()+"\n");
System.out.println("5和10之积等于:"+obj.multiply()+"\n");
System.out.println("5和10之商等于:"+obj.divide()+"\n");
}
}
在编译主类时出错:Run_compute02.java:3: cannot resolve symbol
symbol : constructor Compute_02<int,int>
location: class Compute_02
Compute_02 obj=new Compute_02(5,10);1 error
请帮忙解决!
^
上次你没有写主类,既然你要用 Compute_02 obj=new Compute_02(5,10);
那你为什么不直接在子类写构造函数呢?你在子类中可以自己调用不用系统调用,
Compute_02(int m,int n)
{
super(m,n);
}