我有一个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/