Java程序员_编程开发学习笔记_网站安全运维教程_渗透技术教程

Java 面向对象之Point类实现:从构造方法到对象操作全解析

阿贵
4天前发布 /正在检测是否收录...
温馨提示:
本文最后更新于2025年09月07日,已超过4天没有更新,若内容或图片失效,请留言反馈。

Java 面向对象之Point类实现:从构造方法到对象操作全解析

120.png

一、题目代码呈现

以下是一道关于Java类设计的基础题目,核心是实现一个表示平面点的Point类,包含构造方法、坐标操作等功能,并通过主程序验证。题目包含4处空白,需根据面向对象逻辑补全:

class Point{
   public int x,y;
   public Point() { 
   }
   public Point(int x,int y){
      this.x = x;
      this.y = y;
   }
   //*********Found**********
   public Point(____________ p){
      x = p.x;
      y = p.y;
   }
   public int getX(){
      return x;
   }
   public int getY(){
      return y;
   }
   public void moveTo(int x,int y){
      this.x = x;
      this.y = y;
   }
   public void moveTo(Point p){
      x = p.x;
      y = p.y;
   }
   public String toString(){
      return "("+ x + ","+ y + ")";
   }
   public void translate(int dx,int dy){ //平移
      this.x += dx;
      //*********Found**********
      ____________;
   }
}

public class Java_2 {
   public static void main(String args[]){
      //*********Found**********
      Point p = new ____________(5,5);
      System.out.println("点的当前坐标:("+p.x + "," + p.y+")");
      p.translate(3,4);
      //*********Found**********
      System.out.println("平移到:"+____________());
   }
}

二、空白处解析与解答

1. 第一空:拷贝构造方法的参数类型

答案:Point

public Point(Point p){
   x = p.x;
   y = p.y;
}

解析
此方法是拷贝构造方法,作用是通过一个已有的Point对象p来初始化新对象。方法体内通过p.xp.y获取参数对象的属性值,因此参数必须是Point类型的对象,故填写Point

2. 第二空:平移方法中y坐标的更新逻辑

答案:this.y += dy

public void translate(int dx,int dy){ //平移
   this.x += dx;
   this.y += dy;
}

解析
translate方法的功能是让点沿x轴和y轴分别平移dxdy个单位。已通过this.x += dx完成x坐标的更新,对应地,y坐标需通过this.y += dy实现累加偏移,故填写this.y += dy

3. 第三空:Point对象的实例化类名

答案:Point

Point p = new Point(5,5);

解析
创建对象时需调用Point类的构造方法Point(int x, int y),实例化语法为new 类名(参数),因此此处类名应为Point,填写Point

4. 第四空:获取点坐标的字符串表示方法

答案:p.toString

System.out.println("平移到:"+p.toString());

解析
Point类重写了toString()方法,返回格式为(x,y)的字符串。此处需调用该方法获取平移后的坐标字符串,通过对象p调用,故填写p.toString

三、完整正确代码

四、程序功能与运行结果

核心功能
  • Point类:封装平面点的x、y坐标,提供多种构造方法(无参、带坐标、拷贝构造),以及坐标获取、移动、平移等操作。
  • 主程序:创建初始坐标为(5,5)的点,调用平移方法(沿x轴+3,y轴+4),输出平移前后的坐标。
运行结果
点的当前坐标:(5,5)
平移到:(8,9)

五、核心知识点详解

1. 构造方法的重载
  • 重载定义:在同一类中,方法名相同但参数列表不同的方法(构造方法也支持重载)。
  • Point类的3种构造方法:

    • 无参构造:public Point(){}(默认初始化,x、y为0);
    • 带坐标参数:public Point(int x,int y)(通过具体数值初始化);
    • 拷贝构造:public Point(Point p)(通过已有对象初始化,实现对象复制)。
2. this关键字的作用
  • 区分成员变量与局部变量:如this.x = x中,this.x指对象的成员变量,右侧x是方法参数;
  • 指代当前对象:this.y += dy中,this明确表示当前调用方法的Point对象。
3. 方法的设计逻辑
  • translate(平移):通过累加偏移量修改坐标(x += dxy += dy),属于“相对移动”;
  • moveTo(移动到):直接设置坐标为目标值(绝对位置),提供两种重载形式(支持直接传坐标或Point对象);
  • toString重写:覆盖Object类的默认实现,返回可读性更强的坐标字符串(便于打印输出)。
4. 对象的使用流程
  • 实例化:new Point(5,5)创建对象,内存中分配空间并初始化属性;
  • 方法调用:通过对象引用p调用translate(3,4)toString(),完成操作并获取结果;
  • 属性访问:直接访问public修饰的xy(简化代码,实际开发中建议用getX()/getY()封装)。

六、常见错误与避坑指南

空白处典型错误错误原因正确思路
第一空int/Object参数类型与方法体中p.x矛盾拷贝构造需接收同类对象
第二空y = dy直接赋值而非累加偏移量,逻辑错误平移是“原有坐标+偏移量”
第三空point/Point()类名大小写错误,或多写空括号实例化语法为new 类名(参数)
第四空toString()/p缺少对象引用,或直接打印对象(输出地址)需通过对象调用toString()

七、学习总结

本题是面向对象编程的入门级实践,核心在于理解:

  1. 类的封装性:将点的属性(x、y)和操作(平移、移动)封装在Point类中;
  2. 构造方法的作用:初始化对象,重载构造方法可满足不同创建场景;
  3. 方法设计原则:单一职责(如translate仅负责平移),重载方法提升灵活性。

掌握这些基础概念,是理解更复杂类设计和面向对象思想的关键。

喜欢就支持一下吧
点赞 0 分享 收藏
评论 抢沙发
OωO
取消 登录评论