/** * 课后练习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); } } }