、利用接口实现多态的方法,程序要求如下: (1)首先创建圆类circle和圆柱体类cylinder,其中circle类是父类,cylinder类是子类; (2)创建接口comparable,其中包含一个抽象方法compareto,用来比较对象的大小。抽象方法compareto的形式如下:public int compareto(object o); (3)创建类comparablecircle,该类为circle类的子类,并实现comparable接口; (4)创建类comparablecylinder,该类为cylinder类的子类,并实现comparable接口; (5)创建通用类max,其中包含通用方法max,只要类实现了comparable接口,就可以使用max方法返回两个对象中较大的一个,max方法的方法名称为:public static comparable max(comparable o1,comparable o2); (6)程序的主方法中分别创建两个comparablecircle类对象和两个comparablecylinder类对象,并分别以他们为参数调用max方法,返回两个对象中面积较大的一个。
时间: 2024-03-01 12:50:09 浏览: 88
好的,这里是符合你要求的Java程序:
```java
public class Circle {
protected double radius;
public Circle(double radius) {
this.radius = radius;
}
public double getArea() {
return Math.PI * radius * radius;
}
}
public class Cylinder extends Circle {
protected double height;
public Cylinder(double radius, double height) {
super(radius);
this.height = height;
}
public double getVolume() {
return getArea() * height;
}
}
public interface Comparable {
int compareTo(Object o);
}
public class ComparableCircle extends Circle implements Comparable {
public ComparableCircle(double radius) {
super(radius);
}
@Override
public int compareTo(Object o) {
double diff = getArea() - ((ComparableCircle) o).getArea();
if (diff > 0) {
return 1;
} else if (diff < 0) {
return -1;
} else {
return 0;
}
}
}
public class ComparableCylinder extends Cylinder implements Comparable {
public ComparableCylinder(double radius, double height) {
super(radius, height);
}
@Override
public int compareTo(Object o) {
double diff = getVolume() - ((ComparableCylinder) o).getVolume();
if (diff > 0) {
return 1;
} else if (diff < 0) {
return -1;
} else {
return 0;
}
}
}
public class Max {
public static Comparable max(Comparable o1, Comparable o2) {
if (o1.compareTo(o2) > 0) {
return o1;
} else {
return o2;
}
}
}
public class Main {
public static void main(String[] args) {
ComparableCircle circle1 = new ComparableCircle(1.0);
ComparableCircle circle2 = new ComparableCircle(2.0);
ComparableCylinder cylinder1 = new ComparableCylinder(1.0, 2.0);
ComparableCylinder cylinder2 = new ComparableCylinder(2.0, 1.0);
Comparable maxCircle = Max.max(circle1, circle2);
Comparable maxCylinder = Max.max(cylinder1, cylinder2);
System.out.println("Max circle area: " + ((ComparableCircle) maxCircle).getArea());
System.out.println("Max cylinder volume: " + ((ComparableCylinder) maxCylinder).getVolume());
}
}
```
在这个程序中,我们定义了 `Circle` 和 `Cylinder` 两个类,其中 `Circle` 是父类,`Cylinder` 是子类。然后我们定义了一个 `Comparable` 接口,其中包含一个抽象方法 `compareTo`,用来比较对象的大小。接着,我们创建了 `ComparableCircle` 和 `ComparableCylinder` 两个类,它们分别是 `Circle` 和 `Cylinder` 的子类,并实现了 `Comparable` 接口。在这两个类中,我们实现了 `compareTo` 方法,用来比较两个对象的大小。
最后,我们定义了一个 `Max` 类,其中包含一个静态方法 `max`,它接受两个 `Comparable` 参数,并返回其中较大的一个。在程序的主方法中,我们创建了两个 `ComparableCircle` 对象和两个 `ComparableCylinder` 对象,并分别调用了 `Max.max` 方法,得到了面积或体积较大的对象。
阅读全文