作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 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/
在Java编程中经常碰到类型转换,对象类型转换主要包括向上转型和向下转型。 向上转型 我们在现实中常常这样说:这个人会唱歌。在这里,我们并不关心这个人是黑人还是白人,是成人还是小孩,也就是说我们
当使用使用 C 风格继承的 C API 时,(利用 C 结构的标准布局),例如 GLib ,我们通常使用 C 风格的转换来向下转换: struct base_object { int x;
我是一名优秀的程序员,十分优秀!