超级构造函数中函数的返回值

时间:2016-06-20 12:56:10

标签: java

我必须返回一个函数的值作为super()的参数 特别是我有一个类Polygon(Point []顶点)和一个类Rectangle extends Polygon

类Rectangle在其构造函数中接受两个参数,它们是两个Point,表示Rectangle的两个随机顶点,有助于计算另外两个

关键是,当我创建构造函数Rectangle(p1,p2)时,我必须调用super()传递从p1和p2开始构建的顶点数组; 那么为什么我不应该调用函数来计算数组并​​将其传递给super()?

1 个答案:

答案 0 :(得分:1)

对超级构造函数的调用必须是方法中的第一次调用。这是使用静态助手的最简单的解决方案:

public class Rectangle extends Polygon {
    public Rectangle (int parameter) {
         super(myhelper(parameter));
    }
    private static Point[] myhelper(int parameter) {
        //Do work here!
        return points;
    }
}

如果您发现您的类只不过是复杂的构造函数,那么它可能表明您并不真正需要子类。你经常可以实现这样的东西:

public static Polygon rectangleBuilder(int param) {
   //Do work here!
   return new Polygon(points);
}