2014-02-23 18 views
0

我有一個Fraction類,它實現了一個名爲FractionInterface的接口。在FractionInterface中,我指定了一種方法FractionInterface add(FractionInterface secondFraction);。我在Fraction課上實施此方法時遇到問題。Java接口和向下轉換

public class Fraction implements FractionInterface 
{private int num; // Numerator 
private int den; // Denominator 
    public int getNum() 
{ 
    return this.num; 
} // end getNum 

public int getDen() 
{ 
    return this.den; 
} // end getDen 
public FractionInterface add(FractionInterface secondFraction) 
    { 
    FractionInterface result = (num*secondFraction.getDen()+secondFraction.getNum()*den)/ 
    (den*secondFraction.getDen()); 
    } 
} 

我得到一個錯誤說「類型不匹配:不能從int轉換爲FractionInterface」,我得到了一個提示垂頭喪氣從FractionInterface到分數參數secondFraction,但我不知道該怎麼做。有人能解釋我做錯了什麼嗎?

+0

只要提供'valueOf(int i)'和'toInt()'方法 – Bart

+0

我還沒有學到這方面的知識並不認爲我被允許使用這些方法。 – user3317186

回答

1

你對此有何看法?

FractionInterface result = (num*secondFraction.getDen()+secondFraction.getNum()*den)/ 
(den*secondFraction.getDen()); 

右側是一個數字,左側是一個對象。編譯器無法知道如何將數字轉換爲Fraction對象。

你需要在你Fraction類的構造函數,它接受一個分子和分母:

public Fraction(int numerator, int denominator) { 
    num = numerator; 
    den = denominator; 
} 

,然後做這個

FractionInterface result = new Fraction(THENUMERATOR, THEDEMONIMATOR); 

我認爲,對你來說,是

FractionInterface result = new Fraction(
    (num*secondFraction.getDen()+secondFraction.getNum()*den), 
    (den*secondFraction.getDen()); 
+0

FractionInterface類型可以是Fraction類型,因爲Fraction實現FractionInterface的權利? – user3317186

+0

「可以」? 'Fraction'實現'FractionInterface',因此***是'FractionInterface'。 – aliteralmind