You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Songrui a204011225 宋瑞-202506050301 1 week ago
..
Circle.java 宋瑞-202506050301 1 week ago
README.md 宋瑞-202506050301 1 week ago
Rectangle.java 宋瑞-202506050301 1 week ago
Shape.java 宋瑞-202506050301 1 week ago
TestDrawShape.java 宋瑞-202506050301 1 week ago

README.md

AI交互记录

项目概述

定义一个shape类(draw方法),子类circle,rectangle重写draw.编写一个方法重写drawshape(shape s),调用其draw方法,并在main中测试

开发步骤

1. 创建抽象基类 Shape

需求: 定义图形的公共行为

  • 抽象方法 getArea(): 计算面积
  • 抽象方法 draw(): 绘制图形

实现要点:

  • 使用 abstract 关键字声明抽象类
  • 两个抽象方法由子类强制实现

2. 实现 Rectangle 类

需求: 继承Shape,实现矩形功能

  • 私有属性: length(长), width(宽)
  • 构造方法初始化长和宽
  • 实现 getArea(): 返回 length * width
  • 实现 draw(): 输出矩形信息

关键代码: public class Rectangle extends Shape { @Override public double getArea() { return length * width; } @Override public void draw() { System.out.println("正在绘制一个矩形,长:" + length + ",宽:" + width); } }

3. 实现 Circle 类

需求: 继承Shape,实现圆形功能

  • 私有属性: radius(半径)
  • 构造方法初始化半径
  • 实现 getArea(): 返回 Math.PI * radius * radius
  • 实现 draw(): 输出圆形信息

注意: Circle.java初始为空类,需补充完整实现

4. 创建测试类 TestDrawShape

需求: 演示多态性的三种调用方式

测试场景:

  1. 直接调用: 通过子类对象直接调用draw()
  2. 方法传参: 通过drawShape(Shape s)方法体现多态
  3. 父类引用: 使用 Shape shape = new Circle() 形式

核心方法: public class Rectangle extends Shape { @Override public double getArea() { return length * width; } @Override public void draw() { System.out.println("正在绘制一个矩形,长:" + length + ",宽:" + width); } }

多态性体现

编译时 vs 运行时

  • 编译时: 编译器检查Shape类型是否有draw()方法
  • 运行时: JVM根据实际对象类型调用对应子类的draw()

优势

  1. 扩展性: 新增图形只需继承Shape,无需修改drawShape方法
  2. 统一接口: 所有图形通过相同方式调用
  3. 代码复用: 通用逻辑集中在父类引用中