2个构造函数有什么区别?

我有一个将对象作为函数参数的构造函数。我有2种书写方式,但是我想确保我了解两种书写方式之间的区别。我也想知道哪种方法更好:

public class Line {
    private Point start;
    private Point end;
/**
 * First method: copy the data from each point with get functions
 */
public Line(Point start, Point end) {
    this.start = new Point(start.getX(), start.getY());
    this.end = new Point(end.getX(), end.getY());
}
/**
 * Second method: equal the class variables to the parameters from the function
 */
public Line(Point start, Point end) {
    this.start = start;
    this.end = end;
}

据我了解,在第一种方法中,我为每个点分配一个内存,然后从对象中复制数据。

在第二种方法中,我指向现有对象的内存,因此,如果使用此构造函数,则在另一个函数中更改对象,更改也将出现在该行中。

我认为第一种方法更好,更安全,但是我想知道这是否正确。 谢谢!

评论