Object变量类型是什么意思?

时间:2012-04-08 08:08:19

标签: java types methods argument-passing

我试图了解两个具有相同名称的方法之间的区别。这是我试图理解的代码......

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个对象?

4 个答案:

答案 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()方法是静态调用计算传入方法(MyPointp1)的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。告诉编译器你正在引用静态方法或字段。