Java 第(四)关:抽象类与抽象方法 现实生活中,底部图形与高史定了某个椎体,其是矩形棱椎体、三棱椎体,还是园锥。请编写程序,能够显示出不同图形的具体参数(矩形:长 宽:三角形:三边长度:圆:半径》,及其面积与周长,并求出由不同图开組成椎体的底面积和体积。。 ①编写一抽象类 (shape),长方形类,三角形类与圆类均为其子类,并各有各的属性。甚中父奖有共福其周长、面积的万法。然后任一测战类中,分别建立 若干个子对象,并分别将这些对家的面积与周长统计输出。
时间: 2023-11-15 08:05:02 浏览: 95
下面是一个可能的 Java 程序,实现了题目所要求的功能:
```java
abstract class Shape {
abstract double getArea();
abstract double getPerimeter();
}
class Rectangle extends Shape {
double length;
double width;
Rectangle(double length, double width) {
this.length = length;
this.width = width;
}
double getArea() {
return length * width;
}
double getPerimeter() {
return 2 * (length + width);
}
}
class Triangle extends Shape {
double a;
double b;
double c;
Triangle(double a, double b, double c) {
this.a = a;
this.b = b;
this.c = c;
}
double getArea() {
double p = (a + b + c) / 2;
return Math.sqrt(p * (p - a) * (p - b) * (p - c));
}
double getPerimeter() {
return a + b + c;
}
}
class Circle extends Shape {
double radius;
Circle(double radius) {
this.radius = radius;
}
double getArea() {
return Math.PI * radius * radius;
}
double getPerimeter() {
return 2 * Math.PI * radius;
}
}
public class Main {
public static void main(String[] args) {
Shape[] shapes = {new Rectangle(3, 4), new Triangle(3, 4, 5), new Circle(2)};
double totalArea = 0;
double totalPerimeter = 0;
for (Shape shape : shapes) {
totalArea += shape.getArea();
totalPerimeter += shape.getPerimeter();
System.out.println("Area: " + shape.getArea());
System.out.println("Perimeter: " + shape.getPerimeter());
}
System.out.println("Total Area: " + totalArea);
System.out.println("Total Perimeter: " + totalPerimeter);
}
}
```
在这个程序中,我们定义了一个抽象类 `Shape`,其中有两个抽象方法 `getArea()` 和 `getPerimeter()`,分别用于求形状的面积和周长。然后我们定义了三个具体的子类 `Rectangle`、`Triangle` 和 `Circle`,分别表示矩形、三角形和圆。
在 `main()` 方法中,我们创建了一个由不同图形组成的数组 `shapes`,然后遍历这个数组,分别调用每个形状的 `getArea()` 和 `getPerimeter()` 方法,并将结果累加到 `totalArea` 和 `totalPerimeter` 变量中。最后输出总面积和总周长。
阅读全文