我必须返回一个函数的值作为super()的参数 特别是我有一个类Polygon(Point []顶点)和一个类Rectangle extends Polygon
类Rectangle在其构造函数中接受两个参数,它们是两个Point,表示Rectangle的两个随机顶点,有助于计算另外两个
关键是,当我创建构造函数Rectangle(p1,p2)时,我必须调用super()传递从p1和p2开始构建的顶点数组; 那么为什么我不应该调用函数来计算数组并将其传递给super()?
答案 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);
}