设计一个名为Point的类表示点。这个类包括: a) 2个私有的int类型的成员变量x、y,分别表示x和y坐标; b) 1个不带参数的构造方法; c) 1个带参数的构造方法,方法头如下,注意方法参数名称与成员变量名称相同: public Point(int x, int y) d) 1个movePoint(int dx, int dy)方法实现点的位置移动; e) 使用不带参数的构造方法创建Point对象p1;使用带参数的构造方法创建Point对象p2,要求用户输入p2的坐标,分别调用movePoint方法后,输出p1和p2经过位置移动之前和之后的坐标,要求用户输入在x方向和y方向要移动的距离。
时间: 2024-02-22 09:58:52 浏览: 31
好的,我来演示一下这个类的实现过程。
```java
public class Point {
private int x;
private int y;
// 不带参数的构造方法
public Point() {
x = 0;
y = 0;
}
// 带参数的构造方法
public Point(int x, int y) {
this.x = x;
this.y = y;
}
// 移动点的位置
public void movePoint(int dx, int dy) {
x += dx;
y += dy;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
}
```
接下来是主函数的实现过程:
```java
public static void main(String[] args) {
// 使用不带参数的构造方法创建 Point 对象 p1
Point p1 = new Point();
System.out.println("p1 初始坐标:(" + p1.getX() + "," + p1.getY() + ")");
// 使用带参数的构造方法创建 Point 对象 p2
Scanner sc = new Scanner(System.in);
System.out.print("请输入 p2 的 x 坐标:");
int x = sc.nextInt();
System.out.print("请输入 p2 的 y 坐标:");
int y = sc.nextInt();
Point p2 = new Point(x, y);
System.out.println("p2 初始坐标:(" + p2.getX() + "," + p2.getY() + ")");
// 移动点的位置
System.out.print("请输入 p1 要移动的 x 距离:");
int dx1 = sc.nextInt();
System.out.print("请输入 p1 要移动的 y 距离:");
int dy1 = sc.nextInt();
p1.movePoint(dx1, dy1);
System.out.println("p1 移动后坐标:(" + p1.getX() + "," + p1.getY() + ")");
System.out.print("请输入 p2 要移动的 x 距离:");
int dx2 = sc.nextInt();
System.out.print("请输入 p2 要移动的 y 距离:");
int dy2 = sc.nextInt();
p2.movePoint(dx2, dy2);
System.out.println("p2 移动后坐标:(" + p2.getX() + "," + p2.getY() + ")");
}
```
这段代码的执行结果如下:
```
p1 初始坐标:(0,0)
请输入 p2 的 x 坐标:2
请输入 p2 的 y 坐标:3
p2 初始坐标:(2,3)
请输入 p1 要移动的 x 距离:1
请输入 p1 要移动的 y 距离:2
p1 移动后坐标:(1,2)
请输入 p2 要移动的 x 距离:-1
请输入 p2 要移动的 y 距离:-2
p2 移动后坐标:(1,1)
```