我正在学习 Java 中的类和构造函数。我在一个示例程序中弄乱了代码,似乎无法弄清楚到底发生了什么。
这段代码无法编译,这对我来说很有意义:
class Line {
Point start;
Point end;
Line(final Point start, final Point end) {
this.start = new Point(start);
this.end = new Point(end);
start = new Point(0.4, 0.4);
}...
我试图通过调用 Point 对象的构造函数将原始起始点对象引用分配给另一个 Point 对象。final 关键字与此冲突。
但是,当我从 Point start 参数中删除 final 关键字时...
class Line {
Point start;
Point end;
Line(Point start, final Point end) {
this.start = new Point(start);
this.end = new Point(end);
start = new Point(0.4, 0.4);
}
它似乎并没有真正改变引用,传递给 Line 构造函数的 Point 对象似乎仍然指向原始对象,并且 Line 构造函数的代码没有改变。那么给了什么?这是否与所指的“开始”在 Line 构造函数的范围内是本地的事实有关?