我给了一个类PolyShape通过它们的边数和一个包含它们边长的数组表示多边形,并且我必须将它扩展为一个称为四边形的类,它表示具有4边的多边形。我不确定如何解决这个问题。我开始了这个程序,但是有人能帮我解释一下我应该在数组中包含什么,以及在这种情况下应该如何使用VarArgs?如何使用继承来实现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;
}
}
你做了什么看起来不错。我想也许你应该做的就是编写'Quadrilateral'构造函数,这样必须有四个参数,而不是可变参数。这可能看起来像'public Quadrilateral(int side1,int side2,int side3,int side4){super(side1,side2,side3,side4); }' –
你更可能从http://codereview.stackexchange.com得到任何其他有用的反馈(我绝对可以想到一些) –
@DavidWallace谢谢!这是否意味着我的常数没有用处?只是为了摆脱它是否安全?而且我不必包括额外的获得者和安装者? – sall