Java接口和向下转换

时间:2014-02-23 23:18:33

标签: java interface

我有一个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,但我不知道该怎么做。有人可以解释我做错了吗?

1 个答案:

答案 0 :(得分: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());