gpt4 book ai didi

java - 如何使用以 Object 作为参数的方法正确实现接口(interface)?

转载 作者:行者123 更新时间:2023-12-01 19:42:21 24 4
gpt4 key购买 nike

我正在编写我们的教授给我们作为作业的程序。

我有一个名为Car的类,它有两个私有(private)实数成员xy,它们应该代表汽车的坐标car 在坐标平面上,我想实现一个名为 MyInterface 的接口(interface),在其中声明了一个方法 public booleancompare(Object t)。有人说它必须是Object t而不是其他东西,这样我就可以在多个类中实现该接口(interface)(作业的一部分)。 Java 是我们讨论的编程语言。

有问题的代码部分如下所示:

public interface MyInterface {
public boolean compare(Object t);
}


public class Car implements MyInterface{

private double x, y;

@Override
public boolean compare(Car t) {
double curdist = Math.sqrt(this.x*this.x + this.y*this.y);
double givdist = Math.sqrt(t.x*t.x + t.y*t.y);
if(curdist < givdist) return true;
else return false;
}

}

我的方法compare需要计算当前汽车和给定汽车到点(0,0)的距离,并比较两个距离。如果当前汽车的距离 (curdist) 与给定汽车的距离 (givdist) 更接近 (0,0),则 compare 返回 true,否则返回 false。

我的问题是,如何在 Car 类中正确实现这个方法?我尝试了一些方法,但似乎都没有成功。任何帮助都是值得赞赏的,因为我对面向对象编程很陌生。提前致谢。

最佳答案

如果您必须有Object作为 compare 的参数类型,那么您必须测试传入参数的类以确保它是 Car首先。

更改 compare Object 的参数在你的Car类(class)。然后是@Override注释将确定该方法是否正确覆盖实例方法,并且您不会收到编译器错误。使用instanceof运算符来确定是否 tCar 。您可能决定抛出 IllegalArgumentException如果不是 Car ,或者如果是 null 。然后你可以将其转换到 Car并继续您的方法的逻辑。

即使你必须这样做,也需要 Object对于您的类(class),通常更好的方法是使用泛型。在这里,这将回答“这个类可以与什么相比较?”的问题。如果您已经了解过泛型,那么您可能会理解定义为 MyInterface<T> 的类。 。 compare方法将采用 T 类型的参数。这允许您实现Car中的方法。参数类型为Car ,提供Car implements MyInterface<Car> 。这类似于现有的 Comparable Java 内置接口(interface)。

关于java - 如何使用以 Object 作为参数的方法正确实现接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54894959/

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