1.写一个锥体的泛型类Cone<E>,泛型E为它的底面,Cone可以设置高度和计算体积。然后定义一个泛型Circle。在主类中让Circle作为Cone<E>的底面,并计算Cone<E>的体积。使用java编写
时间: 2024-03-17 07:46:52 浏览: 147
好的,下面是代码实现:
定义泛型类Circle:
```java
public class Circle<T extends Number> {
private T radius;
public Circle(T radius) {
this.radius = radius;
}
public T getRadius() {
return radius;
}
public void setRadius(T radius) {
this.radius = radius;
}
}
```
定义泛型类Cone:
```java
public class Cone<E extends Circle<? extends Number>> {
private E bottom;
private Number height;
public Cone(E bottom, Number height) {
this.bottom = bottom;
this.height = height;
}
public E getBottom() {
return bottom;
}
public void setBottom(E bottom) {
this.bottom = bottom;
}
public Number getHeight() {
return height;
}
public void setHeight(Number height) {
this.height = height;
}
public double getVolume() {
double r = bottom.getRadius().doubleValue();
double h = height.doubleValue();
return 1.0 / 3.0 * Math.PI * r * r * h;
}
}
```
在主函数中使用Circle作为Cone的底面并计算体积:
```java
public class Main {
public static void main(String[] args) {
Circle<Double> circle = new Circle<>(2.0);
Cone<Circle<Double>> cone = new Cone<>(circle, 4.0);
System.out.println("Cone Volume: " + cone.getVolume());
}
}
```
输出结果:Cone Volume: 16.755160819145562
注意:这里的泛型类Cone的底面必须是Circle的子类,而Circle的泛型参数必须是Number的子类,因为在计算体积时需要进行类型转换。
阅读全文