编写一个名为ShapeArea的类,该类包含3个重载的getArea方法分别接受1个、2个、3个参数,打印提示信息并返回对应的圆形、矩形和梯形面积。在主方法中测试。
时间: 2024-11-09 22:23:49 浏览: 18
在Java中,我们可以创建一个名为ShapeArea的抽象类,然后定义三个具体的子类Circle、Rectangle和Triangle,每个子类都覆盖抽象类中的getArea方法。这里是一个简单的实现示例:
```java
// 定义抽象类 ShapeArea
public abstract class ShapeArea {
protected String shapeType;
public ShapeArea(String shapeType) {
this.shapeType = shapeType;
}
// 重载的 getArea 方法,用于计算面积
public abstract double getArea();
// 打印提示信息的方法
protected void printInfo(double area) {
System.out.println("The area of a " + shapeType + " is: " + area);
}
}
// 圆形类 Circle 实现 getArea 方法
public class Circle extends ShapeArea {
private double radius;
public Circle(String shapeType, double radius) {
super(shapeType);
this.radius = radius;
}
@Override
public double getArea() {
return Math.PI * radius * radius;
}
}
// 矩形类 Rectangle 实现 getArea 方法
public class Rectangle extends ShapeArea {
private double width, height;
public Rectangle(String shapeType, double width, double height) {
super(shapeType);
this.width = width;
this.height = height;
}
@Override
public double getArea() {
return width * height;
}
}
// 梯形类 Triangle 实现 getArea 方法
public class Trapezoid extends ShapeArea {
private double base1, base2, height;
public Trapezoid(String shapeType, double base1, double base2, double height) {
super(shapeType);
this.base1 = base1;
this.base2 = base2;
this.height = height;
}
@Override
public double getArea() {
return (base1 + base2) * height / 2;
}
}
// 测试主方法
public static void main(String[] args) {
ShapeArea circle = new Circle("circle", 5.0);
circle.getArea(); // 输出圆的面积
circle.printInfo(circle.getArea());
ShapeArea rectangle = new Rectangle("rectangle", 4.0, 6.0);
rectangle.getArea(); // 输出矩形的面积
rectangle.printInfo(rectangle.getArea());
ShapeArea trapezoid = new Trapezoid("trapezoid", 3.0, 7.0, 4.0);
trapezoid.getArea(); // 输出梯形的面积
trapezoid.printInfo(trapezoid.getArea());
}
```
在这个例子中,我们根据传入的参数动态地计算出各个形状的面积,并通过printInfo方法输出提示信息。
阅读全文