【发布时间】:2021-08-16 00:24:14
【问题描述】:
我对 Java 还是很陌生。这是我正在为类工作的项目,我必须在其中实现抽象类和接口才能构建多边形层次结构。但是,我可以告诉某处的代码有问题。我有一个定义 3 个函数的接口 Polygon() 和一个实现所述接口的抽象类 SimplePolygon()。我想我可能在这里做错了 for 循环,但我不确定。数组的大小必须不同,具体取决于它是三角形还是其他形状,所以我不能硬编码为 3 的大小。
public abstract class Simple_Polygon implements Polygon
{
protected Point vertices[];
public Simple_Polygon(int vertAmount)
{
if (vertAmount < 3)
{
throw new IllegalArgumentException("A polygon has 3 vertices or more!");
}
for (int i = 0; i < vertAmount; i++)
{
vertices[i] = new Point(0, 0);
}
}
}
然后我有扩展 Polygon() 的类 Triangle()。
public class Triangle extends Simple_Polygon
{
public Triangle(Point p1, Point p2, Point p3)
{
super(3);
vertices[0] = p1;
vertices[1] = p2;
vertices[2] = p3;
}
}
最后我有一个由创建三角形对象的老师编写的测试器类。但是,每次我运行它都会得到
Exception in thread "main" java.lang.NullPointerException: Cannot store to object array because "this.vertices" is null
at polygons.Simple_Polygon.<init>(Simple_Polygon.java:23)
at polygons.Triangle.<init>(Triangle.java:14)
分别是抽象构造函数和super调用中的for循环。我曾尝试查看抽象类与接口类的不同问题,但我似乎找不到任何东西。我认为这与我在数组中分配值的方式有关。有人有什么想法吗?
【问题讨论】:
-
在你的数组声明中,你还没有创建数组,只是定义了类型。
标签: java arrays interface abstract-class super