diff --git a/W5-李思彤-202506050313/ShapeTest.java b/W5-李思彤-202506050313/ShapeTest.java new file mode 100644 index 0000000..c49f81b --- /dev/null +++ b/W5-李思彤-202506050313/ShapeTest.java @@ -0,0 +1,65 @@ +/** + * 课后练习w5 基础题(必做) + * 需求: + * 1. 定义Shape类,包含draw()方法 + * 2. 子类Circle、Rectangle重写draw()方法 + * 3. 编写drawShape(Shape s)方法,调用其draw() + * 4. 在main方法中测试多态调用 + */ + +// 父类Shape:定义图形的通用行为 +class Shape { + /** + * 绘制图形的方法,供子类重写 + */ + public void draw() { + System.out.println("绘制通用图形"); + } +} + +// 子类Circle:继承Shape,重写draw() +class Circle extends Shape { + @Override + public void draw() { + System.out.println("绘制圆形 ⭕"); + } +} + +// 子类Rectangle:继承Shape,重写draw() +class Rectangle extends Shape { + @Override + public void draw() { + System.out.println("绘制矩形 🟦"); + } +} + +// 主类:包含工具方法和main测试方法 +public class ShapeTest { + /** + * 统一绘制图形的方法,体现多态 + * @param s 任意Shape类型的图形对象 + */ + public static void drawShape(Shape s) { + s.draw(); // 自动调用对应子类的draw()方法 + } + + public static void main(String[] args) { + // 1. 创建不同图形对象 + Shape circle = new Circle(); + Shape rectangle = new Rectangle(); + Shape shape = new Shape(); + + // 2. 调用统一方法测试多态 + System.out.println("===== 图形绘制测试 ====="); + drawShape(shape); + drawShape(circle); + drawShape(rectangle); + + // 3. 数组遍历测试(额外补充,体现多态数组用法) + System.out.println("\n===== 数组遍历测试 ====="); + Shape[] shapes = {new Circle(), new Rectangle(), new Shape()}; + for (Shape s : shapes) { + drawShape(s); + } + } +} \ No newline at end of file