- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想创建一个名为 NUMBER 的 java 接口(interface)示例,两个 java 类 FRACTION 和 COMPLEX 实现该接口(interface)。我在让它工作时遇到问题。
例如:我有一个名为 add 的 FRACTION 方法,具有以下 header -
public Fraction add(Fraction f)
和一个名为 add 的复杂方法,带有以下 header -
public Complex add(Complex c).
当我将接口(interface)中的方法定义为
public Object add(Object o)
编译 Fraction 时,出现错误:我的 Fraction 方法没有覆盖 NUMBER 接口(interface)中的抽象方法。
最佳答案
问题是,当你编译时,Java看到该接口(interface)有一个名为add
的方法,该方法输出Object
,但在实现类中,它没有找到任何返回 Object
的方法名称 add
。您可以让接口(interface)的方法返回一个 Number
,并根据该值转换输出。您必须记住,尽管所有方法都必须返回该 Number
类型。
另一种选择可能是使用泛型。我不完全确定使用泛型类型重写方法是如何工作的,但您也许可以在 Number
类中使用如下所示的内容:
<T> T add(T t);
我不完全确定这是否可行,因为我在接口(interface)中没有太多地使用泛型,但它可能会。
您也许还可以执行以下操作:
public interface Number<T extends Number> {
T add(T t);
}
分数:
public class Fraction implements Number<Fraction> {
@Override public Fraction add(Fraction f) {
...
}
}
分数:
public class Complex implements Number<Complex> {
@Override public Complex add(Complex c) {
...
}
}
这样做将允许您使用更具体的类型定义方法,并且应该工作得很好,但有两件事是我不确定这是否被认为是“最佳实践”,为接口(interface)的包含相同的类类型,以及您是否愿意向学生展示通用类型。它们是一个非常简单但功能强大的概念,但如果您不想解释,第一个解决方案可能最适合您。
关于java - 为高中生开发一个有关 java 接口(interface)的示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55485043/
我是一名优秀的程序员,十分优秀!