给我用java写一段开闭原则的例子
时间: 2023-12-14 15:36:46 浏览: 52
好的,以下是一个用Java实现的开闭原则例子:
```
// 抽象类Shape
abstract class Shape {
public abstract void draw();
}
// 圆形类Circle,继承自Shape
class Circle extends Shape {
@Override
public void draw() {
// 画圆形的具体实现
System.out.println("画了一个圆形");
}
}
// 矩形类Rectangle,继承自Shape
class Rectangle extends Shape {
@Override
public void draw() {
// 画矩形的具体实现
System.out.println("画了一个矩形");
}
}
// 绘图类Drawing,负责调用各种形状的绘制方法
class Drawing {
public void drawShape(Shape shape) {
shape.draw();
}
}
// 测试类Test,用于测试
public class Test {
public static void main(String[] args) {
Drawing drawing = new Drawing();
// 画圆形
Circle circle = new Circle();
drawing.drawShape(circle);
// 画矩形
Rectangle rectangle = new Rectangle();
drawing.drawShape(rectangle);
}
}
```
在这个例子中,我们定义了一个抽象类Shape,里面有一个抽象方法draw()。然后我们定义了两个具体的形状类Circle和Rectangle,它们都继承自Shape,并且实现了draw()方法,分别表示画圆形和矩形。最后我们定义了一个绘图类Drawing,它负责调用各种形状的绘制方法。在测试类Test中,我们实例化了Drawing对象,并且通过它分别调用了Circle和Rectangle的draw()方法,画出了一个圆形和一个矩形。
这个例子符合开闭原则,因为当我们需要增加一个新的形状时,只需要继承Shape类并实现draw()方法即可,而不需要修改原有的代码。这样就避免了对原有代码的修改,保证了代码的可维护性和可扩展性。