我试图了解两个具有相同名称的方法之间的区别。这是我试图理解的代码......
public class Test {
public static void main(String[] args) {
MyPoint p1 = new MyPoint();
MyPoint p2 = new MyPoint(10, 30.5);
System.out.println(p1.distance(p2));
System.out.println(MyPoint.distance(p1, p2));
}
}
class MyPoint {
.....
}
public double distance(MyPoint secondPoint) {
return distance(this, secondPoint);
}
public static double distance(MyPoint p1, MyPoint p2) {
return Math.sqrt((p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y));
}
有人可以解释两种distance()
方法之间的区别。类型MyPoint
实际上意味着什么?为什么其中一个方法有一个MyPoint
个对象,而另一个方法有2个MyPoint
个对象?
答案 0 :(得分:2)
MyPoint
是对象的类型。例如,在distance(MyPoint p1, MyPoint p2)
方法中,它意味着您将2个对象传递给此方法 - 第一个对象是名为p1的MyPoint
对象,第二个对象是另一个MyPoint
对象叫做p2。
2个println语句之间的区别在于第一个语句运行distance(MyPoint)
方法,第二个语句运行distance(MyPoint, MyPoint)
方法。此外,第一种方法从distance()
对象运行MyPoint p1
到传递给方法(p2
)的方法,而第二种distance()
方法是静态调用计算传入方法(MyPoint
和p1
)的2 p2
个对象之间的距离。
答案 1 :(得分:0)
不同之处在于你的计算方式。第一个是实例的状态,第二个是“静态”的。
您可能希望了解实际用法。如果它像实用程序一样,那么使其静止就更有意义了。
答案 2 :(得分:0)
distance是用于计算作为输入给出的两个点之间的距离的方法。
Class MyPoint描绘了太空中的点。现在这个类中的方法距离(Mypoint x)给出了这个点与作为参数传递的参考点的距离,而静态方法只返回传递的两个点之间的距离
答案 3 :(得分:0)
也许你的问题与静态方法有关?
p1.distance(p2)
这会调用MyPoint的成员函数,此调用来自MyPoint p1的特定实例 然而
MyPoint.distance(p1, p2)
调用MyPoint的静态方法,该方法不需要任何实例,但必须添加MyPoint。告诉编译器你正在引用静态方法或字段。