Java类的继承来计算每种图形的面积和周长。
时间: 2023-07-30 14:06:06 浏览: 147
好的,我们可以定义一个抽象类 Shape,表示图形,然后定义子类 Circle、Rectangle、Triangle 等表示不同的图形。每个子类都需要实现计算面积和周长的方法。
下面是一个示例代码:
```java
abstract class Shape {
abstract double getArea();
abstract double getPerimeter();
}
class Circle extends Shape {
private double radius;
Circle(double r) {
radius = r;
}
double getArea() {
return Math.PI * radius * radius;
}
double getPerimeter() {
return 2 * Math.PI * radius;
}
}
class Rectangle extends Shape {
private double width, height;
Rectangle(double w, double h) {
width = w;
height = h;
}
double getArea() {
return width * height;
}
double getPerimeter() {
return 2 * (width + height);
}
}
class Triangle extends Shape {
private double a, b, c;
Triangle(double side1, double side2, double side3) {
a = side1;
b = side2;
c = side3;
}
double getArea() {
double p = getPerimeter() / 2;
return Math.sqrt(p * (p - a) * (p - b) * (p - c));
}
double getPerimeter() {
return a + b + c;
}
}
```
在这个示例中,Shape 类是一个抽象类,定义了 getArea() 和 getPerimeter() 两个抽象方法,分别用来计算图形的面积和周长。这两个方法在子类中都需要实现。
Circle、Rectangle、Triangle 三个子类分别表示圆形、矩形、三角形,都继承自 Shape 类,并实现了父类中的两个抽象方法。这里采用了构造函数来初始化图形的属性,例如 Circle 类的 radius 属性表示圆的半径。
我们可以使用以下代码来测试这些类的功能:
```java
public static void main(String[] args) {
Circle circle = new Circle(5);
System.out.println("Circle area: " + circle.getArea());
System.out.println("Circle perimeter: " + circle.getPerimeter());
Rectangle rectangle = new Rectangle(3, 4);
System.out.println("Rectangle area: " + rectangle.getArea());
System.out.println("Rectangle perimeter: " + rectangle.getPerimeter());
Triangle triangle = new Triangle(3, 4, 5);
System.out.println("Triangle area: " + triangle.getArea());
System.out.println("Triangle perimeter: " + triangle.getPerimeter());
}
```
运行这段代码会输出以下结果:
```
Circle area: 78.53981633974483
Circle perimeter: 31.41592653589793
Rectangle area: 12.0
Rectangle perimeter: 14.0
Triangle area: 6.0
Triangle perimeter: 12.0
```
可以看到,我们成功地计算出了圆形、矩形和三角形的面积和周长。
阅读全文