给Point类添加以下几个求两点间距离的多态方法,并进行调用测试。 public double distance(Point p) 1求点与p点间距离 public double distance(int x,inty) /求点与(x,y) 点间距离 public static double distance(Point x,Pointy) /求x、y两点间距离
时间: 2023-06-07 14:11:47 浏览: 89
编写一个程序,设计一个点类Point,求两个点之间的距离。
好的,关于你的问题,我们来逐一解答。
首先,给Point类添加以下多态方法:
```java
public class Point {
private int x;
private int y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
public double distance(Point p) {
int dx = x - p.x;
int dy = y - p.y;
return Math.sqrt(dx * dx + dy * dy);
}
public double distance(int x, int y) {
return distance(new Point(x, y));
}
public static double distance(Point a, Point b) {
return a.distance(b);
}
}
```
这里我们添加了三个多态方法,分别是求点与p点间的距离、求点与(x,y)点间的距离和求两个点之间的距离。
其中,求点与p点间距离的方法直接调用了该点与另一个点之间的距离方法,而求点与(x,y)点间距离的方法则通过创建新的Point对象来调用第一个方法,最后求x、y两点间距离的方法则是调用了第一个方法。
接下来,我们进行测试:
```java
public static void main(String[] args) {
Point p1 = new Point(0, 0);
Point p2 = new Point(3, 4);
System.out.printf("distance between (%d, %d) and (%d, %d): %.2f%n",
p1.x, p1.y, p2.x, p2.y, p1.distance(p2));
System.out.printf("distance between (%d, %d) and (%d, %d): %.2f%n",
p1.x, p1.y, 3, 4, p1.distance(3, 4));
System.out.printf("distance between (%d, %d) and (%d, %d): %.2f%n",
p1.x, p1.y, p2.x, p2.y, Point.distance(p1, p2));
}
```
输出结果如下:
```
distance between (0, 0) and (3, 4): 5.00
distance between (0, 0) and (3, 4): 5.00
distance between (0, 0) and (3, 4): 5.00
```
我们可以看到,测试结果符合预期,三个多态方法均能正确计算两个点之间的距离。
阅读全文