声明一个泛型类Cone,Cone对象计算体积时,只关心它的底是否拿计算面积,并不关心底的类型,定义圆类和矩形类,创建圆柱对象和方柱对象,计算体积并输出。
时间: 2024-12-16 16:19:57 浏览: 16
首先,我们可以声明一个泛型类`Cone`,这个类接受一个类型参数`T`,表示底面的形状,但我们在计算体积时只需要底面的面积。在这里,我们可以假设`T`有一个公共的面积计算方法,如`Circle`类有`getArea()`方法,`Rectangle`类也有。
```java
public class Cone<T> {
private T base;
public Cone(T base) {
this.base = base;
}
// 使用类型参数T的area()方法来计算体积
public double calculateVolume() {
double baseArea = base.getArea();
return (1 / 3) * Math.PI * Math.pow(baseArea, 2);
}
}
```
接下来,我们定义两个具体的类:`Circle`和`Rectangle`,分别继承自`Shape`类(这里假设存在),并且提供各自的面积计算方法:
```java
class Circle extends Shape {
private double radius;
// 圆的构造函数等...
public double getArea() {
return Math.PI * radius * radius;
}
}
class Rectangle extends Shape {
private double length;
private double width;
// 矩形的构造函数等...
public double getArea() {
return length * width;
}
}
```
然后我们可以创建`Cone`对象,用圆形和矩形作为底面:
```java
public static void main(String[] args) {
Circle circleBase = new Circle(5); // 圆的半径为5
Rectangle rectangleBase = new Rectangle(4, 6); // 矩形的长宽分别为4和6
Cone<Circle> coneWithCircle = new Cone<>(circleBase);
Cone<Rectangle> coneWithRectangle = new Cone<>(rectangleBase);
System.out.println("Cone with circular base volume: " + coneWithCircle.calculateVolume());
System.out.println("Cone with rectangular base volume: " + coneWithRectangle.calculateVolume());
// ... 这里展示更多其他类型的底面实例和计算
}
```
阅读全文