.综合利用各项泛型机制编写程序。首先定义一个接口GetArea,它至少包含一个可以计算面积的成员方法。然后,编写实现该接口的两个类:正方形类和圆类。接着编写一个具有泛型特征的类,方法包括在控制台窗口中输出某种图形
时间: 2024-02-22 10:56:17 浏览: 60
的面积。具体实现如下:
```java
//定义一个GetArea接口
interface GetArea {
double getArea();
}
//正方形类实现GetArea接口
class Square implements GetArea {
private double side;
public Square(double s) {
side = s;
}
public double getArea() {
return side * side;
}
}
//圆类实现GetArea接口
class Circle implements GetArea {
private double radius;
public Circle(double r) {
radius = r;
}
public double getArea() {
return Math.PI * radius * radius;
}
}
//泛型类PrintArea,可以输出各种实现GetArea接口的图形的面积
class PrintArea<T extends GetArea> {
private T shape;
public PrintArea(T s) {
shape = s;
}
public void print() {
System.out.println("面积是:" + shape.getArea());
}
}
//测试代码
public class Test {
public static void main(String[] args) {
Square square = new Square(5);
Circle circle = new Circle(2);
PrintArea<Square> printSquare = new PrintArea<Square>(square);
PrintArea<Circle> printCircle = new PrintArea<Circle>(circle);
printSquare.print();
printCircle.print();
}
}
```
运行结果为:
```
面积是:25.0
面积是:12.566370614359172
```
这个例子中,我们定义了一个GetArea接口,它包含一个可以计算面积的成员方法getArea()。然后,我们编写了两个实现该接口的类:正方形类Square和圆类Circle。接着,我们定义了一个泛型类PrintArea,它的类型参数T必须是实现GetArea接口的类。PrintArea类有一个成员变量shape,它的类型是T。PrintArea类还有一个可以输出shape的面积的方法print()。
在测试代码中,我们创建了一个Square对象和一个Circle对象,并分别创建了两个泛型类PrintArea的对象:printSquare和printCircle。printSquare的类型参数是Square,printCircle的类型参数是Circle。我们调用它们的print()方法,就可以输出它们的面积了。
阅读全文