diff --git a/w5/Bike.java b/w5/Bike.java new file mode 100644 index 0000000..6c51ee2 --- /dev/null +++ b/w5/Bike.java @@ -0,0 +1,6 @@ + public class Bike extends Vehicle { + @Override + public void run() { + System.out.println("自行车在非机动车道行驶 🚲"); + } + } \ No newline at end of file diff --git a/w5/Car.java b/w5/Car.java new file mode 100644 index 0000000..b64c5b8 --- /dev/null +++ b/w5/Car.java @@ -0,0 +1,6 @@ + public class Car extends Vehicle { + @Override + public void run() { + System.out.println("汽车在公路上行驶 🚗"); + } + } \ No newline at end of file diff --git a/w5/Circle.java b/w5/Circle.java new file mode 100644 index 0000000..ca2aa25 --- /dev/null +++ b/w5/Circle.java @@ -0,0 +1,7 @@ + public class Circle extends Shape { + // 重写父类的draw方法 + @Override + public void draw() { + System.out.println("绘制圆形 ⭕"); + } + } \ No newline at end of file diff --git a/w5/README.md b/w5/README.md new file mode 100644 index 0000000..fac1c0f --- /dev/null +++ b/w5/README.md @@ -0,0 +1,22 @@ +基础题 + +功能:实现Shape父类,Circle、Rectangle子类重写draw()方法,多态调用绘制图形 + +核心文件:Shape.java、Circle.java、Rectangle.java、ShapeTest.java + +运行:编译javac \*.java,执行java ShapeTest + +结果:输出通用图形、圆形、矩形绘制语句 + + + +进阶题 + +功能:Vehicle抽象类定义run()抽象方法,Car/Bike/Truck子类实现,数组遍历实现多态 + +核心文件:Vehicle.java、Car.java、Bike.java、Truck.java、VehicleTest.java + +运行:编译javac \*.java,执行java VehicleTest + +结果:输出不同交通工具行驶语句 + diff --git a/w5/Rectangle.java b/w5/Rectangle.java new file mode 100644 index 0000000..092fc59 --- /dev/null +++ b/w5/Rectangle.java @@ -0,0 +1,7 @@ + public class Rectangle extends Shape { + // 重写父类的draw方法 + @Override + public void draw() { + System.out.println("绘制矩形 🟦"); + } + } \ No newline at end of file diff --git a/w5/Shape.java b/w5/Shape.java new file mode 100644 index 0000000..29ac6df --- /dev/null +++ b/w5/Shape.java @@ -0,0 +1,6 @@ +public class Shape { + // 父类的draw方法,子类可以重写 + public void draw() { + System.out.println("绘制通用图形"); + } + } \ No newline at end of file diff --git a/w5/ShapeTest.java b/w5/ShapeTest.java new file mode 100644 index 0000000..5ae02bd --- /dev/null +++ b/w5/ShapeTest.java @@ -0,0 +1,17 @@ + public class ShapeTest { + // 多态方法:接收Shape类型参数,调用对应子类的draw + public static void drawShape(Shape s) { + s.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); // 调用父类Shape的draw + drawShape(circle); // 调用Circle的draw + drawShape(rectangle); // 调用Rectangle的draw + } + } \ No newline at end of file diff --git a/w5/Truck.java b/w5/Truck.java new file mode 100644 index 0000000..995ba17 --- /dev/null +++ b/w5/Truck.java @@ -0,0 +1,6 @@ + public class Truck extends Vehicle { + @Override + public void run() { + System.out.println("卡车在货运道路行驶 🚚"); + } + } \ No newline at end of file diff --git a/w5/Vehicle.java b/w5/Vehicle.java new file mode 100644 index 0000000..73ff17b --- /dev/null +++ b/w5/Vehicle.java @@ -0,0 +1,4 @@ +public abstract class Vehicle { + // 抽象方法run,没有方法体,子类必须重写 + public abstract void run(); + } \ No newline at end of file diff --git a/w5/VehicleTest.java b/w5/VehicleTest.java new file mode 100644 index 0000000..120d9c1 --- /dev/null +++ b/w5/VehicleTest.java @@ -0,0 +1,15 @@ + public class VehicleTest { + public static void main(String[] args) { + // 1. 创建Vehicle数组,存放不同子类对象 + Vehicle[] vehicles = { + new Car(), + new Bike(), + new Truck() + }; + // 2. 遍历数组,调用每个对象的run()方法 + System.out.println("\n=== 进阶题抽象类多态测试 ==="); + for (Vehicle v : vehicles) { + v.run(); + } + } + } \ No newline at end of file diff --git a/w5/ai协助记录.txt b/w5/ai协助记录.txt new file mode 100644 index 0000000..da65b34 --- /dev/null +++ b/w5/ai协助记录.txt @@ -0,0 +1,4 @@ +在编写Java进阶题代码时,定义抽象方法时编译报错。 +AI指出抽象方法不允许包含方法实现,并提供了正确语法格式,完成修正后编译通过。 +在实现多态数组时,未掌握父类数组存放子类对象的用法, +AI说明数组多态的使用规则后,完成了数组遍历与方法调用代码,程序正常运行。 \ No newline at end of file diff --git a/w5/运行输出.jpg b/w5/运行输出.jpg new file mode 100644 index 0000000..bc4fef0 Binary files /dev/null and b/w5/运行输出.jpg differ