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.
|
|
1 week ago | |
|---|---|---|
| .. | ||
| Circle.java | 1 week ago | |
| README.md | 1 week ago | |
| Rectangle.java | 1 week ago | |
| Shape.java | 1 week ago | |
| TestDrawShape.java | 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
需求: 演示多态性的三种调用方式
测试场景:
- 直接调用: 通过子类对象直接调用draw()
- 方法传参: 通过drawShape(Shape s)方法体现多态
- 父类引用: 使用
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()
优势
- 扩展性: 新增图形只需继承Shape,无需修改drawShape方法
- 统一接口: 所有图形通过相同方式调用
- 代码复用: 通用逻辑集中在父类引用中