Java 获取点对象值的两种方法?

Java 获取点对象值的两种方法?,java,point,Java,Point,为什么可以通过使用方法并引用值从java.awt.Point类中获取x和y值 Point p = new Point(10,20); int x0 = p.getX(); int y0 = p.getY(); int x1 = p.x; int y1 = p.y; System.out.println(x0+"=="+x1+"and"+y0+"=="+y1); 制作这门课的人忘了把x和y列为私有吗 看看这些,它们似乎返回不同的类型p.x返回一个int,而p.getX()返回一个double 点

为什么可以通过使用方法并引用值从java.awt.Point类中获取x和y值

Point p = new Point(10,20);
int x0 = p.getX();
int y0 = p.getY();
int x1 = p.x;
int y1 = p.y;
System.out.println(x0+"=="+x1+"and"+y0+"=="+y1);

制作这门课的人忘了把x和y列为私有吗

看看这些,它们似乎返回不同的类型
p.x
返回一个
int
,而
p.getX()
返回一个
double

点的源代码显示:

public int x;
//...
public double getX() {
    return x;
}
看来这是它唯一的目的
getX()
是一种更方便的方法,可以通过
double
将坐标更改为

 double x0 = p.getX();

 // getX returns the X coordinate of this Point2D in double precision

像这样一个非常简单的对象,主要用于几何体相关的东西,更容易与公共字段一起使用,例如,递增位置是用.x+=1完成的。并不是每门课都需要二传手/接受者。“让这门课的人忘了把x和y定为私有吗?”是的,基本上;请记住
java.awt.Point
是最古老的java类之一,所以它是在所有好的封装模式真正广为人知之前引入的。@LouisWasserman我不相信,封装信息隐藏不是从“java时代”开始的,我想arynaq在有效的java中说的更多,Josh Bloch(最初编写了许多API)指出:“突出的示例包括java.awt包中的Point和Dimension类。这些类不应被模仿,而应被视为警示故事”,并解释了为什么这些设计决策现在被视为错误。