分别编写两个类Point2D,Point3D来表示二维空间和三维空间的点,使之满足下列要求: 1) Point2D有两个整型成员变量x, y (分别为二维空间的X,Y方向坐标),Point2D的构造方法要实现对其成员变量x, y的初始化。 2) Point2D有一个void型成员方法offset(int a, int b),它可以实现Point2D的平移。 3) Point3D是Point2D的直接子类,它有有三个整型成员变量x,y,z (分别为三维空间的X,Y,Z方向坐标),Point3D有两个构造方法:Point3D(int x, int y, int z)和Point3D(Point2D p, int z),两者均可实现对Point3D的成员变量x, y, z的初始化。 4) Point3D有一个void型成员方法offset(int a, int b, int c),该方法可以实现Point3D的平移。 5) 在Point3D中的主函数main()中实例化两个Point2D的对象p2d1,p2d2,打印出它们之间的距离,再实例化两个Point3D的对象p3d1,p3d2,打印出他们之间的距离。 给出代码并给出注释
时间: 2023-06-02 12:07:37 浏览: 154
```
//定义Point2D类,表示二维空间的点
public class Point2D {
int x; //X方向坐标
int y; //Y方向坐标
//有参构造方法,用于初始化x和y
public Point2D(int x, int y) {
this.x = x;
this.y = y;
}
//平移方法,a和b表示要平移的距离
public void offset(int a, int b) {
this.x += a;
this.y += b;
}
}
//定义Point3D类,表示三维空间的点,继承自Point2D
public class Point3D extends Point2D {
int z; //Z方向坐标
//有参构造方法1,用于初始化x、y、z
public Point3D(int x, int y, int z) {
super(x, y);
this.z = z;
}
//有参构造方法2,用于初始化x、y,z默认为0
public Point3D(Point2D p, int z) {
super(p.x, p.y);
this.z = z;
}
//平移方法,a、b、c表示要平移的距离
public void offset(int a, int b, int c) {
super.offset(a, b);
this.z += c;
}
//主函数
public static void main(String[] args) {
//实例化两个二维点对象
Point2D p2d1 = new Point2D(1, 2);
Point2D p2d2 = new Point2D(4, 5);
//计算二维点之间的距离并打印
double dis2d = Math.sqrt(Math.pow(p2d1.x-p2d2.x, 2) + Math.pow(p2d1.y-p2d2.y, 2));
System.out.println("p2d1和p2d2之间的距离为:" + dis2d);
//实例化两个三维点对象
Point3D p3d1 = new Point3D(1, 2, 3);
Point3D p3d2 = new Point3D(p2d2, 6);
//计算三维点之间的距离并打印
double dis3d = Math.sqrt(Math.pow(p3d1.x-p3d2.x, 2) + Math.pow(p3d1.y-p3d2.y, 2) + Math.pow(p3d1.z-p3d2.z, 2));
System.out.println("p3d1和p3d2之间的距离为:" + dis3d);
}
}
```
注释:定义了两个类Point2D和Point3D,Point3D是Point2D的子类,用于表示二维空间和三维空间的点;在Point2D中定义了两个成员变量x和y、一个有参构造方法和一个平移方法;在Point3D中定义了一个成员变量z、两个有参构造方法和一个平移方法,在平移方法中调用了父类Point2D的平移方法;主函数中实例化了两个二维点对象和两个三维点对象,并计算打印了二维点之间和三维点之间的距离。
阅读全文