2. 定义一个接口 CompareObject,具有方法 compareTo0用于比较两个对象。 定义一个类 Position 从 CompareObject 派生而来,有x和y属性表示其坐标, 该类实现 compare To0方法,用于比较两个对象距离原点(0,0)的距离。 定义测试类测试 Position 类的 compareTo0方法。
时间: 2023-12-10 07:37:27 浏览: 66
下面是 CompareObject 接口和 Position 类的实现:
```java
// CompareObject 接口
public interface CompareObject {
public int compareTo0(Object o);
}
// Position 类
public class Position implements CompareObject {
private int x;
private int y;
public Position(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
@Override
public int compareTo0(Object o) {
if (o instanceof Position) {
Position p = (Position) o;
double distance1 = Math.sqrt(x * x + y * y);
double distance2 = Math.sqrt(p.getX() * p.getX() + p.getY() * p.getY());
if (distance1 > distance2) {
return 1;
} else if (distance1 < distance2) {
return -1;
} else {
return 0;
}
}
return 0;
}
}
```
下面是测试类的实现:
```java
public class TestPosition {
public static void main(String[] args) {
Position p1 = new Position(3, 4);
Position p2 = new Position(-1, -1);
System.out.println("比较 p1 和 p2: " + p1.compareTo0(p2));
System.out.println("比较 p2 和 p1: " + p2.compareTo0(p1));
}
}
```
输出结果:
```
比较 p1 和 p2: 1
比较 p2 和 p1: -1
```
根据 compareTo0 方法的实现,我们可以看到 p1 和 p2 的距离分别为 5 和 1.41,因此输出结果符合预期。