5)创建通用类Max,其中包含通用方法max,只要类实现了Comparable接口,就可以使用max方法返回两个对象中较大的一个。Max方法的方法名称为: public static Comparable max(Comparable o1, Comparable o2) (6)程序的主方法中分别创建两个ComparableCircle类对象和两个ComparableCylinder类对象,并分别以它们为参数调用max方法,返回两个对象中面积较大的一个。
时间: 2023-12-06 17:44:38 浏览: 111
JavaAdvancedMinMax:Java的进阶minmax方法
下面是实现通用类Max的代码:
```java
public class Max {
public static Comparable max(Comparable o1, Comparable o2) {
if (o1.compareTo(o2) > 0) {
return o1;
} else {
return o2;
}
}
}
```
其中,max方法接收两个Comparable类型的参数,通过调用它们的compareTo方法比较大小,返回较大的那个对象。
接下来是ComparableCircle类和ComparableCylinder类的实现:
```java
public class ComparableCircle extends Circle implements Comparable<ComparableCircle> {
public ComparableCircle(double radius) {
super(radius);
}
public int compareTo(ComparableCircle o) {
if (getArea() > o.getArea()) {
return 1;
} else if (getArea() < o.getArea()) {
return -1;
} else {
return 0;
}
}
}
public class ComparableCylinder extends Cylinder implements Comparable<ComparableCylinder> {
public ComparableCylinder(double radius, double height) {
super(radius, height);
}
public int compareTo(ComparableCylinder o) {
if (getVolume() > o.getVolume()) {
return 1;
} else if (getVolume() < o.getVolume()) {
return -1;
} else {
return 0;
}
}
}
```
这里的ComparableCircle和ComparableCylinder都实现了Comparable接口,并重写了compareTo方法,以便在Max类中调用比较大小。
最后,在主方法中调用Max类的max方法,比较两个对象的大小:
```java
ComparableCircle c1 = new ComparableCircle(3.0);
ComparableCircle c2 = new ComparableCircle(4.0);
ComparableCylinder cy1 = new ComparableCylinder(2.0, 3.0);
ComparableCylinder cy2 = new ComparableCylinder(3.0, 4.0);
Comparable maxCircle = Max.max(c1, c2);
Comparable maxCylinder = Max.max(cy1, cy2);
System.out.println("Max circle area is " + ((Circle) maxCircle).getArea());
System.out.println("Max cylinder volume is " + ((Cylinder) maxCylinder).getVolume());
```
输出结果应该是:
```
Max circle area is 50.26548245743669
Max cylinder volume is 113.09733552923254
```
阅读全文