Java 如何使用继承实现VarArgs?

Java 如何使用继承实现VarArgs?,java,Java,我得到了一个类PolyShape,它通过多边形的边数来表示多边形,还有一个数组包含它们的边长度,我必须将它扩展到一个称为四边形的类,它表示一个有4条边的多边形。我不确定如何将其作为一个整体来处理。我启动了这个程序,但是有人能帮我解释一下我应该在数组中包含什么,以及在这种情况下我应该如何使用VarArgs吗 import java.util.Arrays; public class PolyShape { private int numSides; private int[] sideLengt

我得到了一个类PolyShape,它通过多边形的边数来表示多边形,还有一个数组包含它们的边长度,我必须将它扩展到一个称为四边形的类,它表示一个有4条边的多边形。我不确定如何将其作为一个整体来处理。我启动了这个程序,但是有人能帮我解释一下我应该在数组中包含什么,以及在这种情况下我应该如何使用VarArgs吗

import java.util.Arrays;

public class PolyShape {
private int numSides;
private int[] sideLengths;

public PolyShape(int ... sideLengths) {
    this.sideLengths = sideLengths;
    this.numSides = sideLengths.length;
}

public int getNumSides() {
    return numSides;
}
public int[] getSideLengths() {
    return Arrays.copyOf(sideLengths, sideLengths.length);
}
public int getPerimeter() {
    int perim = 0;
    for(int n : sideLengths)
        perim += n;
    return perim;
}
public String toString() {
    String s = "I am a shape with " + numSides + " sides of length: ";
    for(int length : sideLengths) 
        s += length + " ";
    s += "\nI am a polygon.";
    return s;
}
}
四边形类:

public class Quadrilateral extends PolyShape {

private final int POLYGON_SIDES = 4;

public Quadrilateral(int ... sideLengths) {
    super(sideLengths);
}

public String toString() {
    String parentString = super.toString();
    parentString += "\nI am a Quadrilateral.";
    return parentString;
}
}

子类是四边形的,它有4条边,所以不需要使用vararg方法参数创建构造函数。只需在构造器内通过4个面。将这4个边传递给父构造函数肯定会使用vararg参数调用父构造函数

你所做的看起来很好。我想你应该做的是编写
四边形
构造函数,这样它就必须有四个参数,而不是一个vararg。这可能看起来像是
公共四边形(intside1,intside2,intside3,intside4){super(side1,side2,side3,side4);}
你更可能从@DavidWallace得到任何其他有用的反馈(我肯定能想到一些),谢谢!这是否意味着我的常数没有用处?扔掉它安全吗?而且我不必包含额外的getter和setter?我可以这么说,是的。虽然这个代码片段可以解决这个问题,但确实有助于提高您的文章质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。
public Quadrilateral extends PolyShape {
  public Quadrilateral(int side1, int side2, int side3, int side4) {
      super(side1, side2, side3, side4);
  }    
}