Java 接口(interface)和向下转型

标签 java interface

我有一个 Fraction 类,它实现了一个名为 FractionInterface 的接口(interface)。在FractionInterface中,我指定了一个方法FractionInterface add(FractionInterface secondaryFraction);。我在我的 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。”,有人提示我将参数 secondaryFraction 从 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 接口(interface)和向下转型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21976067/

相关文章:

oop - 确保嵌入式结构实现接口(interface)而不引入歧义

inheritance - 在结构中嵌入两个同名的结构

java - 尝试重现 spring security OAuth2Login 示例时不断收到错误

java - 当我尝试使用按钮在 j2me 上导航表单时出现 NullPointEException

java - 在 Java 中实现出队

c++ - 创建一个接口(interface)来模拟 C++ 对象

java - 获取 GPS 坐标 : Android

java - 什么类型的三角形?

java - 使用在实现中声明但未在接口(interface)中定义的方法

com - 解密未记录的 COM 接口(interface)