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