diff --git a/w5/Shape.java b/w5/Shape.java new file mode 100644 index 0000000..cad5e14 --- /dev/null +++ b/w5/Shape.java @@ -0,0 +1,20 @@ +class Shape { + public void draw() { + System.out.println("绘制一个形状"); + } +} + +class Circle extends Shape { + @Override + public void draw() { + System.out.println("绘制一个圆形 ○"); + } +} + +class Rectangle extends Shape { + @Override + public void draw() { + System.out.println("绘制一个矩形 ▭"); + } +} + diff --git a/w5/TestShape.java b/w5/TestShape.java new file mode 100644 index 0000000..6137625 --- /dev/null +++ b/w5/TestShape.java @@ -0,0 +1,18 @@ +// 测试类 +public class TestShape { + // 多态方法:接收父类引用,实际调用子类重写的方法 + public static void drawShape(Shape s) { + s.draw(); // 这里发生多态 + } + + public static void main(String[] args) { + Shape s1 = new Circle(); // 向上转型 + Shape s2 = new Rectangle(); + + drawShape(s1); // 输出:绘制一个圆形 ○ + drawShape(s2); // 输出:绘制一个矩形 ▭ + + // 直接用子类对象也可以 + drawShape(new Circle()); + } +} \ No newline at end of file