gpt4 book ai didi

java - java "incompatible types"的原因是什么?

转载 作者:行者123 更新时间:2023-12-02 06:33:32 26 4
gpt4 key购买 nike

import java.util.*;
class Poly{
protected int[] coef = new int[1001];
protected int[] exp = new int[1001];
protected int len;
protected void attach(int c, int e){
coef[len] = c;
exp[len++] = e;
}
protected void print() {
for (int i=0; i<len; i++)
System.out.print(coef[i]+" "+exp[i]+" ");
System.out.println();
}
}
class Add extends Poly{
protected Add add(Add y) {
int i,j;
Add rel = new Add();
for(i=0, j=0; i<len && j<y.len;) {
if(exp[i] < y.exp[j]) {
rel.attach(y.coef[j], y.exp[j]);
j++;
} else if(exp[i] > y.exp[j]) {
rel.attach(coef[i], exp[i]);
i++;
} else{
int c = coef[i] + y.coef[j];
if(c != 0)
rel.attach(c,exp[i]);
i++;
j++;
}
}
while(i < len)
rel.attach(coef[i], exp[i++]);
while (j < y.len)
rel.attach(y.coef[j], y.exp[j++]);
return rel;
}
}
class Mul extends Add{
protected Add mul(Add y){
Mul sum = new Mul(); //the following error has been solved by change this
//Mul to Add , why?
for(int i=0;i<len;i++){
Mul tmp = new Mul();
for(int j=0; j<y.len; j++)
tmp.attach(coef[i]*y.coef[j], exp[i]+y.exp[j]);
sum = sum.add(tmp); //there are an error here
//incompatible types
//required : Mul
//found : Add
}
return sum;
}
}
public class answer{
public static void main(String[] argv){
Mul d = new Mul();
Mul e = new Mul();
d.attach(6,4);
d.attach(7,2);
d.attach(2,1);
d.attach(8,0);
e.attach(9,5);
e.attach(3,2);
e.attach(-1,1);
e.attach(5,0);
System.out.println("Mul");
System.out.println("D(x)= 9 5 3 2 -1 1 5 0");
System.out.println("E(x)= 6 4 7 2 2 1 8 0");
System.out.print("F(x)=");
d.mul(e).print();
}
}

这是一个简单的 BigInt 示例,我用它来实践我的扩展概念,

Mul 类有错误:

  sum = sum.add(tmp);
^
incompatible types
required : Mul
found : Add

当我更改 Mul sum = new Mul(); 时,我解决了这个问题。 Add sum = new Add();` ,在同一个 Mul 类中。

为什么可以运行?为什么我不能使用原始代码 Mul sum = new Mul()

这个问题,我在Google搜索总是说如何解决,但我想知道这个概念。

请,这是我第一次用英语提问,如果您发现任何冒犯的地方,请原谅。

谢谢

最佳答案

Add.add 方法返回 Add 类的对象。您正尝试将此对象的引用分配给类型为 Mul 的变量 mul。这是不允许的,因为 Add 不是 Mul 的子类。 (事实上​​,MulAdd 的子类,但这无关紧要。)

关于java - java "incompatible types"的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19876130/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com