创建“可比较的圆〞类,扩展自Circle类 (Circle类包含私有的 “半径〞数据域以及公 开的访问器) ,并实现 Comparable接口(实现 compareTo方法,根据面积比较圆大小)。编写Max方法接受Comparable类型参数,返回其中较大者,并编写测试程
时间: 2023-06-26 20:07:18 浏览: 79
序。
首先,我们需要创建一个Circle类,包含私有的“半径”数据域以及公开的访问器:
```java
public class Circle {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
public double getRadius() {
return radius;
}
public double getArea() {
return Math.PI * radius * radius;
}
}
```
接下来,我们创建一个“可比较的圆”类,扩展自Circle类,并实现Comparable接口:
```java
public class ComparableCircle extends Circle implements Comparable<ComparableCircle> {
public ComparableCircle(double radius) {
super(radius);
}
@Override
public int compareTo(ComparableCircle other) {
if (this.getArea() > other.getArea()) {
return 1;
} else if (this.getArea() < other.getArea()) {
return -1;
} else {
return 0;
}
}
}
```
在这个类中,我们重写了compareTo方法,根据圆的面积比较大小。
最后,我们编写一个Max方法,接受Comparable类型参数,返回其中较大者:
```java
public static <T extends Comparable<T>> T max(T a, T b) {
if (a.compareTo(b) > 0) {
return a;
} else {
return b;
}
}
```
我们使用泛型,使得这个方法可以接受任何实现了Comparable接口的类型。在方法中,我们调用compareTo方法,根据比较结果返回较大的那个对象。
最后,我们编写一个测试程序,测试我们的实现:
```java
public static void main(String[] args) {
ComparableCircle circle1 = new ComparableCircle(5);
ComparableCircle circle2 = new ComparableCircle(10);
System.out.println("Circle 1 area: " + circle1.getArea());
System.out.println("Circle 2 area: " + circle2.getArea());
ComparableCircle maxCircle = max(circle1, circle2);
System.out.println("Max circle area: " + maxCircle.getArea());
}
```
输出结果为:
```
Circle 1 area: 78.53981633974483
Circle 2 area: 314.1592653589793
Max circle area: 314.1592653589793
```
可以看到,我们成功地比较了两个圆的大小,并返回了面积较大的那个圆。
阅读全文