gpt4 book ai didi

java - 为高中生开发一个有关 java 接口(interface)的示例

转载 作者:行者123 更新时间:2023-12-02 01:34:14 25 4
gpt4 key购买 nike

我想创建一个名为 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com