9 changed files with 193 additions and 0 deletions
@ -0,0 +1,35 @@ |
|||||
|
/** |
||||
|
* 圆形类,继承Shape,实现面积计算 |
||||
|
*/ |
||||
|
public class Circle extends Shape { |
||||
|
// 圆的半径
|
||||
|
private double radius; |
||||
|
// π常量
|
||||
|
private static final double PI = 3.1415926; |
||||
|
/** |
||||
|
* 无参构造 |
||||
|
*/ |
||||
|
public Circle() {} |
||||
|
/** |
||||
|
* 带参构造,初始化半径 |
||||
|
* @param radius 半径 |
||||
|
*/ |
||||
|
public Circle(double radius) { |
||||
|
this.radius = radius; |
||||
|
} |
||||
|
/** |
||||
|
* 实现父类抽象方法,计算圆面积:πr² |
||||
|
* @return 圆的面积 |
||||
|
*/ |
||||
|
@Override |
||||
|
public double getArea() { |
||||
|
return PI * radius * radius; |
||||
|
} |
||||
|
// Getter和Setter
|
||||
|
public double getRadius() { |
||||
|
return radius; |
||||
|
} |
||||
|
public void setRadius(double radius) { |
||||
|
this.radius = radius; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,20 @@ |
|||||
|
/** |
||||
|
* 测试类,验证图形面积计算器的功能 |
||||
|
*/ |
||||
|
public class Main { |
||||
|
public static void main(String[] args) { |
||||
|
// 1. 创建圆形对象(半径5)
|
||||
|
Shape circle = new Circle(5); |
||||
|
// 2. 创建矩形对象(长4,宽3)
|
||||
|
Shape rectangle = new Rectangle(4, 3); |
||||
|
// 3. 创建三角形对象(底6,高4)
|
||||
|
Shape triangle = new Triangle(6, 4); |
||||
|
// 4. 通过工具类统一打印面积(多态效果)
|
||||
|
System.out.println("=== 圆形面积 ==="); |
||||
|
ShapeUtil.printArea(circle); |
||||
|
System.out.println("\n=== 矩形面积 ==="); |
||||
|
ShapeUtil.printArea(rectangle); |
||||
|
System.out.println("\n=== 三角形面积 ==="); |
||||
|
ShapeUtil.printArea(triangle); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,30 @@ |
|||||
|
图形面积计算器重构实验 |
||||
|
|
||||
|
一、实验背景 |
||||
|
|
||||
|
现有Circle、Rectangle、Triangle三个图形类独立存在,无法统一处理。本实验通过抽象类+继承重构,实现图形面积的统一计算与打印。 |
||||
|
|
||||
|
|
||||
|
|
||||
|
二、文件说明 |
||||
|
|
||||
|
Shape.java:抽象父类,定义面积计算接口 |
||||
|
|
||||
|
Circle.java:圆形类,继承Shape |
||||
|
|
||||
|
Rectangle.java:矩形类,继承Shape |
||||
|
|
||||
|
Triangle.java:三角形类,继承Shape |
||||
|
|
||||
|
ShapeUtil.java:工具类,统一打印面积 |
||||
|
|
||||
|
Main.java:测试类,程序入口 |
||||
|
|
||||
|
|
||||
|
|
||||
|
三、运行步骤 |
||||
|
|
||||
|
编译:javac \*.java |
||||
|
|
||||
|
运行:java Main |
||||
|
|
||||
@ -0,0 +1,43 @@ |
|||||
|
/** |
||||
|
* 矩形类,继承Shape,实现面积计算 |
||||
|
*/ |
||||
|
public class Rectangle extends Shape { |
||||
|
// 长
|
||||
|
private double length; |
||||
|
// 宽
|
||||
|
private double width; |
||||
|
/** |
||||
|
* 无参构造 |
||||
|
*/ |
||||
|
public Rectangle() {} |
||||
|
/** |
||||
|
* 带参构造,初始化长和宽 |
||||
|
* @param length 长 |
||||
|
* @param width 宽 |
||||
|
*/ |
||||
|
public Rectangle(double length, double width) { |
||||
|
this.length = length; |
||||
|
this.width = width; |
||||
|
} |
||||
|
/** |
||||
|
* 实现父类抽象方法,计算矩形面积:长×宽 |
||||
|
* @return 矩形的面积 |
||||
|
*/ |
||||
|
@Override |
||||
|
public double getArea() { |
||||
|
return length * width; |
||||
|
} |
||||
|
// Getter和Setter
|
||||
|
public double getLength() { |
||||
|
return length; |
||||
|
} |
||||
|
public void setLength(double length) { |
||||
|
this.length = length; |
||||
|
} |
||||
|
public double getWidth() { |
||||
|
return width; |
||||
|
} |
||||
|
public void setWidth(double width) { |
||||
|
this.width = width; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,10 @@ |
|||||
|
/** |
||||
|
* 图形抽象父类,定义统一的面积计算接口 |
||||
|
*/ |
||||
|
public abstract class Shape { |
||||
|
/** |
||||
|
* 抽象方法:计算图形面积,由子类具体实现 |
||||
|
* @return 图形面积 |
||||
|
*/ |
||||
|
public abstract double getArea(); |
||||
|
} |
||||
@ -0,0 +1,12 @@ |
|||||
|
/** |
||||
|
* 图形工具类,提供统一的面积打印方法 |
||||
|
*/ |
||||
|
public class ShapeUtil { |
||||
|
/** |
||||
|
* 统一打印图形面积的方法,支持所有Shape子类 |
||||
|
* @param shape 图形对象(Circle/Rectangle/Triangle) |
||||
|
*/ |
||||
|
public static void printArea(Shape shape) { |
||||
|
System.out.println("该图形的面积为:" + shape.getArea()); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,43 @@ |
|||||
|
/** |
||||
|
* 三角形类,继承Shape,实现面积计算 |
||||
|
*/ |
||||
|
public class Triangle extends Shape { |
||||
|
// 底
|
||||
|
private double base; |
||||
|
// 高
|
||||
|
private double height; |
||||
|
/** |
||||
|
* 无参构造 |
||||
|
*/ |
||||
|
public Triangle() {} |
||||
|
/** |
||||
|
* 带参构造,初始化底和高 |
||||
|
* @param base 底 |
||||
|
* @param height 高 |
||||
|
*/ |
||||
|
public Triangle(double base, double height) { |
||||
|
this.base = base; |
||||
|
this.height = height; |
||||
|
} |
||||
|
/** |
||||
|
* 实现父类抽象方法,计算三角形面积:底×高/2 |
||||
|
* @return 三角形的面积 |
||||
|
*/ |
||||
|
@Override |
||||
|
public double getArea() { |
||||
|
return base * height / 2; |
||||
|
} |
||||
|
// Getter和Setter
|
||||
|
public double getBase() { |
||||
|
return base; |
||||
|
} |
||||
|
public void setBase(double base) { |
||||
|
this.base = base; |
||||
|
} |
||||
|
public double getHeight() { |
||||
|
return height; |
||||
|
} |
||||
|
public void setHeight(double height) { |
||||
|
this.height = height; |
||||
|
} |
||||
|
} |
||||
Binary file not shown.
|
After Width: | Height: | Size: 67 KiB |
Loading…
Reference in new issue