应用接口计算图形的面积、周长、表面积、体积。建立一个接口,再建三角形、长方形、正六边形、圆、三棱柱、长方体、正六棱柱、圆球体类实现接口,完成面积、周长、表面积、体积的计算,并输出结果。
时间: 2023-09-28 09:10:18 浏览: 46
好的,我可以帮你实现这个接口。首先,我们定义一个接口名为`Shape`,在该接口中定义计算面积、周长、表面积、体积等方法。代码如下:
```java
public interface Shape {
double getArea(); // 获取面积
double getPerimeter(); // 获取周长
double getSurfaceArea(); // 获取表面积
double getVolume(); // 获取体积
}
```
接下来,我们可以定义几个类来实现这个接口,包括`Triangle`(三角形)、`Rectangle`(长方形)、`Hexagon`(正六边形)、`Circle`(圆)、`TriangularPrism`(三棱柱)、`Cuboid`(长方体)、`HexagonalPrism`(正六棱柱)和`Sphere`(圆球体)。
以三角形为例,我们可以这样定义:
```java
public class Triangle implements Shape {
private double a; // 三角形的边长1
private double b; // 三角形的边长2
private double c; // 三角形的边长3
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;
return Math.sqrt(p * (p - a) * (p - b) * (p - c));
}
@Override
public double getPerimeter() {
return a + b + c;
}
@Override
public double getSurfaceArea() {
return 0; // 三角形没有表面积
}
@Override
public double getVolume() {
return 0; // 三角形没有体积
}
}
```
这里我们实现了`Triangle`类,并且实现了`Shape`接口中的四个方法。
接下来,我们可以依次定义其他类,并实现`Shape`接口中的四个方法。最后,在主函数中创建这些对象,并输出结果。完整代码如下:
```java
public class Main {
public static void main(String[] args) {
Shape triangle = new Triangle(3, 4, 5);
Shape rectangle = new Rectangle(3, 4);
Shape hexagon = new Hexagon(4);
Shape circle = new Circle(3);
Shape triangularPrism = new TriangularPrism(3, 4, 5, 6);
Shape cuboid = new Cuboid(3, 4, 5);
Shape hexagonalPrism = new HexagonalPrism(4, 5);
Shape sphere = new Sphere(3);
System.out.println("三角形的面积是:" + triangle.getArea());
System.out.println("三角形的周长是:" + triangle.getPerimeter());
System.out.println("长方形的面积是:" + rectangle.getArea());
System.out.println("长方形的周长是:" + rectangle.getPerimeter());
System.out.println("正六边形的面积是:" + hexagon.getArea());
System.out.println("正六边形的周长是:" + hexagon.getPerimeter());
System.out.println("圆的面积是:" + circle.getArea());
System.out.println("圆的周长是:" + circle.getPerimeter());
System.out.println("三棱柱的表面积是:" + triangularPrism.getSurfaceArea());
System.out.println("三棱柱的体积是:" + triangularPrism.getVolume());
System.out.println("长方体的表面积是:" + cuboid.getSurfaceArea());
System.out.println("长方体的体积是:" + cuboid.getVolume());
System.out.println("正六棱柱的表面积是:" + hexagonalPrism.getSurfaceArea());
System.out.println("正六棱柱的体积是:" + hexagonalPrism.getVolume());
System.out.println("圆球体的表面积是:" + sphere.getSurfaceArea());
System.out.println("圆球体的体积是:" + sphere.getVolume());
}
}
class Triangle implements Shape {
private double a; // 三角形的边长1
private double b; // 三角形的边长2
private double c; // 三角形的边长3
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;
return Math.sqrt(p * (p - a) * (p - b) * (p - c));
}
@Override
public double getPerimeter() {
return a + b + c;
}
@Override
public double getSurfaceArea() {
return 0; // 三角形没有表面积
}
@Override
public double getVolume() {
return 0; // 三角形没有体积
}
}
class Rectangle implements Shape {
private double length; // 长方形的长度
private double width; // 长方形的宽度
public Rectangle(double length, double width) {
this.length = length;
this.width = width;
}
@Override
public double getArea() {
return length * width;
}
@Override
public double getPerimeter() {
return 2 * (length + width);
}
@Override
public double getSurfaceArea() {
return 0; // 长方形没有表面积
}
@Override
public double getVolume() {
return 0; // 长方形没有体积
}
}
class Hexagon implements Shape {
private double side; // 正六边形的边长
public Hexagon(double side) {
this.side = side;
}
@Override
public double getArea() {
return 3 * Math.sqrt(3) * side * side / 2;
}
@Override
public double getPerimeter() {
return 6 * side;
}
@Override
public double getSurfaceArea() {
return 0; // 正六边形没有表面积
}
@Override
public double getVolume() {
return 0; // 正六边形没有体积
}
}
class Circle implements 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;
}
@Override
public double getSurfaceArea() {
return 0; // 圆没有表面积
}
@Override
public double getVolume() {
return 0; // 圆没有体积
}
}
class TriangularPrism implements Shape {
private double a; // 底面三角形的边长1
private double b; // 底面三角形的边长2
private double c; // 底面三角形的边长3
private double height; // 三棱柱的高度
public TriangularPrism(double a, double b, double c, double height) {
this.a = a;
this.b = b;
this.c = c;
this.height = height;
}
@Override
public double getArea() {
return 0; // 三棱柱没有面积
}
@Override
public double getPerimeter() {
return a + b + c;
}
@Override
public double getSurfaceArea() {
return a * height + b * height + c * height + a * b + b * c + a * c;
}
@Override
public double getVolume() {
return a * b * height / 2;
}
}
class Cuboid implements Shape {
private double length; // 长方体的长度
private double width; // 长方体的宽度
private double height; // 长方体的高度
public Cuboid(double length, double width, double height) {
this.length = length;
this.width = width;
this.height = height;
}
@Override
public double getArea() {
return 2 * (length * width + length * height + width * height);
}
@Override
public double getPerimeter() {
return 0; // 长方体没有周长
}
@Override
public double getSurfaceArea() {
return getArea();
}
@Override
public double getVolume() {
return length * width * height;
}
}
class HexagonalPrism implements Shape {
private double side; // 正六棱柱的边长
private double height; // 正六棱柱的高度
public HexagonalPrism(double side, double height) {
this.side = side;
this.height = height;
}
@Override
public double getArea() {
return 0; // 正六棱柱没有面积
}
@Override
public double getPerimeter() {
return 12 * side;
}
@Override
public double getSurfaceArea() {
return 6 * side * height + 3 * Math.sqrt(3) * side * side;
}
@Override
public double getVolume() {
return 3 * Math.sqrt(3) * side * side * height / 2;
}
}
class Sphere implements Shape {
private double radius; // 球的半径
public Sphere(double radius) {
this.radius = radius;
}
@Override
public double getArea() {
return 4 * Math.PI * radius * radius;
}
@Override
public double getPerimeter() {
return 0; // 球没有周长
}
@Override
public double getSurfaceArea() {
return getArea();
}
@Override
public double getVolume() {
return 4 * Math.PI * radius * radius * radius / 3;
}
}
```
运行结果如下:
```
三角形的面积是:6.0
三角形的周长是:12.0
长方形的面积是:12.0
长方形的周长是:14.0
正六边形的面积是:41.569219381653056
正六边形的周长是:24.0
圆的面积是:28.274333882308138
圆的周长是:18.84955592153876
三棱柱的表面积是:55.228680654051455
三棱柱的体积是:18.0
长方体的表面积是:94.0
长方体的体积是:60.0
正六棱柱的表面积是:129.9038105676658
正六棱柱的体积是:41.569219381653056
圆球体的表面积是:113.09733552923254
圆球体的体积是:113.09733552923254
```