Browse Source

多态基础、进阶题

main
Wangyifei 1 week ago
parent
commit
f198baa4cc
  1. 6
      w5/Bike.java
  2. 6
      w5/Car.java
  3. 7
      w5/Circle.java
  4. 22
      w5/README.md
  5. 7
      w5/Rectangle.java
  6. 6
      w5/Shape.java
  7. 17
      w5/ShapeTest.java
  8. 6
      w5/Truck.java
  9. 4
      w5/Vehicle.java
  10. 15
      w5/VehicleTest.java
  11. 4
      w5/ai协助记录.txt
  12. BIN
      w5/运行输出.jpg

6
w5/Bike.java

@ -0,0 +1,6 @@
public class Bike extends Vehicle {
@Override
public void run() {
System.out.println("自行车在非机动车道行驶 🚲");
}
}

6
w5/Car.java

@ -0,0 +1,6 @@
public class Car extends Vehicle {
@Override
public void run() {
System.out.println("汽车在公路上行驶 🚗");
}
}

7
w5/Circle.java

@ -0,0 +1,7 @@
public class Circle extends Shape {
// 重写父类的draw方法
@Override
public void draw() {
System.out.println("绘制圆形 ⭕");
}
}

22
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
结果:输出不同交通工具行驶语句

7
w5/Rectangle.java

@ -0,0 +1,7 @@
public class Rectangle extends Shape {
// 重写父类的draw方法
@Override
public void draw() {
System.out.println("绘制矩形 🟦");
}
}

6
w5/Shape.java

@ -0,0 +1,6 @@
public class Shape {
// 父类的draw方法,子类可以重写
public void draw() {
System.out.println("绘制通用图形");
}
}

17
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
}
}

6
w5/Truck.java

@ -0,0 +1,6 @@
public class Truck extends Vehicle {
@Override
public void run() {
System.out.println("卡车在货运道路行驶 🚚");
}
}

4
w5/Vehicle.java

@ -0,0 +1,4 @@
public abstract class Vehicle {
// 抽象方法run,没有方法体,子类必须重写
public abstract void run();
}

15
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();
}
}
}

4
w5/ai协助记录.txt

@ -0,0 +1,4 @@
在编写Java进阶题代码时,定义抽象方法时编译报错。
AI指出抽象方法不允许包含方法实现,并提供了正确语法格式,完成修正后编译通过。
在实现多态数组时,未掌握父类数组存放子类对象的用法,
AI说明数组多态的使用规则后,完成了数组遍历与方法调用代码,程序正常运行。

BIN
w5/运行输出.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Loading…
Cancel
Save