Java中MyPoint类如何传递对象参数实现两点距离计算
解决MyPoint类中distance方法的参数问题
嘿,我看到你在实现MyPoint类的distance方法时,不知道怎么正确传入MyPoint对象作为参数,这其实是个很常见的小问题,咱们一步步来解决它:
问题分析
你写的第一个distance方法里,参数只写了myPoint,但Java要求必须声明参数的类型,而且注意Java是大小写敏感的,类名MyPoint首字母要大写,不能写成小写的myPoint。另外,虽然同一个类的对象可以直接访问彼此的私有字段,但从封装性角度考虑,更推荐给私有字段添加getter方法,这样代码更健壮。
修正后的完整代码
import java.util.Scanner; import java.awt.geom.Point2D; public class MyPoint { private double x1, y1; // 无参构造器 public MyPoint() { x1 = 0; y1 = 0; } // 带参构造器 public MyPoint(double x1, double y1) { this.x1 = x1; this.y1 = y1; } // 新增getter方法,符合封装原则 public double getX1() { return x1; } public double getY1() { return y1; } // 接收MyPoint对象的distance方法 public double distance(MyPoint otherPoint) { // 直接复用已有的distance(double x2, double y2)方法,避免重复代码 return this.distance(otherPoint.getX1(), otherPoint.getY1()); } // 接收坐标的distance方法(你原来的代码,保留不变) public double distance(double x2, double y2) { double distance = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)); return distance; } }
关键修改点说明
- 参数类型声明:把
distance(myPoint)改成distance(MyPoint otherPoint),明确参数类型是MyPoint,同时给参数起一个有意义的名字(比如otherPoint,表示另一个点)。 - 代码复用:在接收MyPoint对象的distance方法里,直接调用已经实现好的接收坐标的distance方法,这样不用重复写平方根计算的逻辑,减少冗余。
- 封装优化:添加了
getX1()和getY1()两个getter方法,用来获取私有字段的值,避免直接访问私有成员,让代码更符合面向对象的封装思想。
测试示例
如果你想测试这个方法,可以这样写:
public class TestMyPoint { public static void main(String[] args) { MyPoint point1 = new MyPoint(0, 0); MyPoint point2 = new MyPoint(3, 4); // 调用接收MyPoint对象的distance方法 double dist = point1.distance(point2); System.out.println("两点之间的距离是:" + dist); // 输出5.0 } }
内容的提问来源于stack exchange,提问作者killuabusher
相关产品推荐
相关产品推荐

