首先,我很抱歉可能有一个不正确的标题,我可能会想到别的东西但是这里有。我有一个简单的程序,使用Processing小程序在Java中绘制星形和圆形。我有一个Shape类型的ArrayList。
ArrayList<Shape> shapeList= new ArrayList<Shape>();
然后我通过构造函数添加各种星形和圆形,该构造函数使用重载来确定它是星形还是圆形。
对于明星:
shapeList.add( new Shape(x, y, size, colour, numPoints, pApp));
对于圈子:
shapeList.add( new Shape(x, y, size, colour, pApp));
完成后,任务是循环ArrayList以绘制和渲染形状。星形和圆形类都有自己的绘制方法来绘制形状。
for ( Shape shape: shapeList )
{
shape.update();
shape.draw();
}
我遇到的问题是,当我希望它退回时,它无法覆盖Shape类中的空draw()。进入Star或Circle类并执行特定的draw(),具体取决于对象是ArrayList中该点的星形还是圆形。
谢谢!
答案 0 :(得分:0)
定义Shape接口
public interface Shape {
// the methods circle and star need to implement
void update();
void draw();
}
实施圈子
public class Circle implements Shape {
public Circle(int x, int y, int size, Color colour, App pApp){
// your code
}
@Override
public void draw() {
System.out.println("Drawing Circle");
}
@Override
public void update() {
System.out.println("Updating Circle");
}
}
实施明星
public class Star implements Shape {
public Circle(int x, int y, int size, int numPoints, Color colour, App pApp){
// your code
}
@Override
public void draw() {
System.out.println("Drawing Star");
}
@Override
public void update() {
System.out.println("Updating Star");
}
}
将它们添加到您的列表中
shapeList.add( new Star(x, y, size, colour, numPoints, pApp));
shapeList.add( new Circle(x, y, size, colour, pApp));
shapeList.add( new Star(x, y, size, colour, numPoints, pApp));
shapeList.add( new Circle(x, y, size, colour, pApp));
for ( Shape shape: shapeList )
{
shape.update();
shape.draw();
}