什么是最好的构造函数

时间:2012-10-26 10:44:34

标签: java oop constructor

考虑我们有两个类LinePoint,其中类Line使用类Point,如下所示:

public class Point {
   private int x;
   private int y;

   public Point(int x, int y) {
      this.x = x;
      this.y = y;
   }
}

public Class Line
{
   private Point start;
   private Point end;
   ...
}

我想知道由于OOP原则,下面的哪个构造函数更适合类Line?

public Line(Point start, Point end)
{
   this.start = start;
   this.end = end;
}

public Line(int startX, int startY, int endX, int endY)
{
   start = new Point(startX, startY);
   end = new Point(endX, endY);
}

3 个答案:

答案 0 :(得分:10)

绝对是第一个。它更高级,意图更清晰,更简洁,并且对Point类的更改更易于维护。

答案 1 :(得分:2)

我认为创建Points的实例然后将其传递给构造函数会更好,而不是让构造函数有一点额外的工作。

所以,你应该选择第一个。这样,构造函数只需要使用传递的引用初始化引用,而不是创建自己。

答案 2 :(得分:0)

您可以同时使用它们,但如果您需要composition只关联第二个。