gpt4 book ai didi

java - 继承类分数/整数

转载 作者:行者123 更新时间:2023-12-01 14:59:13 32 4
gpt4 key购买 nike

因此,我创建了一个名为 Test 的简单类,如下所示:

import prog.utili.IntegerB;
//It's a custom class
class Test
{
public static void main(String[] args)
{
IntegerB a = new IntegerB(1);
IntegerB b = new IntegerB(2);
IntegerB sum = a.plus(b);
System.out.println(sum);
}
}

我想练习继承,所以我创建了两个自定义类。分数...

package prog.utili;
public class Fraction
{
private int num;
private int den;

public Fraction(int x, int y)
{
[...]
}

public Fraction(int x)
{
this(x, 1);
}

public Fraction plus(Fraction f)
{
int n = this.num * f.den + this.den * f.num;
int d = this.den * f.den;
return new Fraction(n, d);
}

[...]
}

...和 ​​IntegerB:

package prog.utili;
public class IntegerB extends Fraction
{
public IntegerB(int num)
{
super(num);
}

public IntegerB plus(IntegerB other)
{
return (IntegerB)this.plus(other);
}
}

问题是我不断收到相同的错误:

at prog.utili.IntegerB.plus(IntegerB.java:11)

我知道我可以简单地解决这个问题,只需删除 IntegerB 上的最后一个方法并将 Test.java 的第 9 行替换为

IntegerB sum = (IntegerB)a.plus(b)

但我绝对想使用继承规则而不是“plus”方法来做到这一点!

最佳答案

要实现方法plus(IntegerB),您可以调用plus(IntegerB),它又调用plus(IntegerB),等等。 .直到出现 StackOverflowError。

为您的方法提供实际的实现:

return new IntegerB(this.getNum() + other.getNum());

return new IntegerB(super.plus(other).getNum());

另请注意,将 Test.java 的最后一行替换为

IntegerB sum = (IntegerB)a.plus(b);

不起作用,因为 Fraction 中的 plus() 方法不返回 IntegerB,而是返回 Fraction。因此,您将得到一个 ClassCastException。

关于java - 继承类分数/整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13923199/

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