我有一个Fraction类,该类实现了名为FractionInterface的接口。在FractionInterface中,我指定了方法FractionInterface add(FractionInterface secondFraction);。我在Fraction类中实现此方法遇到麻烦。

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。”,我得到了将参数secondFraction从FractionInterface转换为Fraction的提示,但我不确定该怎么做。有人可以解释我在做什么错吗?

最佳答案

您期望这做什么?

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());

关于java - Java接口(interface)和向下转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21976067/

10-12 04:16