父类和子类之间的设计建议?

Rob*_*110 5 java simulation class parent-child

我正在进行物理模拟.

我有一个ArrayList包含模拟中所有对象的东西.我有一个父类:Shape和两个子类:CircleRectangle.

当然,父类没有draw()方法,但每个子类都有.因此,当我循环通过列表来绘制每个元素时,它不允许我,因为类中没有draw()方法Shape(因为我将列表定义为ArrayList<Shape>,并且每个新元素都添加一个子类)实例).

有没有办法以一种良好而整洁的方式解决这个问题?

abh*_*pil 4

最简洁的前进方式是使用接口。

public interface Shape {
    void draw();
}

public class Rectangle implements Shape {
    @Override
    public void draw() { // draw rect }
}

public class Circle implements Shape {
    @Override
    public void draw() { // draw circle }
}
Run Code Online (Sandbox Code Playgroud)

如果您希望 Shape 与它的子类共享一些其他逻辑,您可以使用任何附加代码创建一个实现 Shape 的 AbstractShape 类,并使用此抽象类扩展子类。

  • 由于该接口仅声明了一个“draw()”方法,因此我将接口命名为“Drawable”,而不是“Shape”。 (2认同)