所以,我創建了一個名爲測試一個簡單的類,如下所示:繼承類分數/整數
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)
但我絕對想要使用「加號」方法的繼承規則來做到這一點!
如果你實際實施了'IntegerB.plus(IntegerB)'而不是隻是試圖轉發到其他實現,它可能會工作。 –
你不會說你正在得到什麼錯誤......它是什麼? :-) –
明顯'StackOverflowError' – jlordo