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