(1)定义一个抽象类Shape,在抽象类Shape 中定义求面积getArea()和周长 getPerimeter()的抽象方法。(2)分别定义继承抽象类Shape的3个子类即 Triangle、Rectangle和 Circle,在这3个子类中重写 Shape中的方法 getArea()和 getPerimeter()。(3)创建类Triangle、Rectangle、Circle的对象,对3个类中的方法进行调用测试。
时间: 2024-03-02 07:49:08 浏览: 20
好的,根据你的要求,我来为你编写代码,实现这个程序:
```
// 抽象类 Shape
public abstract class Shape {
public abstract double getArea();
public abstract double getPerimeter();
}
// 子类 Triangle
public class Triangle extends Shape {
private double a; // 三角形的底
private double b; // 三角形的高
private double c; // 三角形的斜边
public Triangle(double a, double b, double c) {
this.a = a;
this.b = b;
this.c = c;
}
@Override
public double getArea() {
double p = (a + b + c) / 2.0;
return Math.sqrt(p * (p - a) * (p - b) * (p - c));
}
@Override
public double getPerimeter() {
return a + b + c;
}
}
// 子类 Rectangle
public class Rectangle extends Shape {
private double width; // 矩形的宽
private double height; // 矩形的高
public Rectangle(double width, double height) {
this.width = width;
this.height = height;
}
@Override
public double getArea() {
return width * height;
}
@Override
public double getPerimeter() {
return 2 * (width + height);
}
}
// 子类 Circle
public class Circle extends Shape {
private double radius; // 圆的半径
public Circle(double radius) {
this.radius = radius;
}
@Override
public double getArea() {
return Math.PI * radius * radius;
}
@Override
public double getPerimeter() {
return 2 * Math.PI * radius;
}
}
// 测试程序
public class Test {
public static void main(String[] args) {
// 创建一个 Triangle 对象,并调用其计算面积和周长的方法
Triangle triangle = new Triangle(3, 4, 5);
System.out.println("Triangle Area: " + triangle.getArea());
System.out.println("Triangle Perimeter: " + triangle.getPerimeter());
// 创建一个 Rectangle 对象,并调用其计算面积和周长的方法
Rectangle rectangle = new Rectangle(4, 5);
System.out.println("Rectangle Area: " + rectangle.getArea());
System.out.println("Rectangle Perimeter: " + rectangle.getPerimeter());
// 创建一个 Circle 对象,并调用其计算面积和周长的方法
Circle circle = new Circle(5);
System.out.println("Circle Area: " + circle.getArea());
System.out.println("Circle Perimeter: " + circle.getPerimeter());
}
}
```
这个程序中,我们定义了 Shape 抽象类和三个子类 Triangle、Rectangle 和 Circle,分别代表三种不同的图形。在测试程序中,我们创建了这三个子类的对象,并分别调用了它们的计算面积和周长的方法。