定义一个接口用来实现两个对象的比较。
interface CompareObject{
public int compareTo(Object o); //若返回值是 0 , 代表相等; 若为正数,代表当前对象大;负数代表当前对象小
}
定义一个Circle类。
定义一个ComparableCircle类,继承Circle类并且实现CompareObject接口。在ComparableCircle类中给出接口中方法compareTo的实现体,用来比较两个圆的半径大小。
定义一个测试类TestInterface,创建两个ComparableCircle对象,调用compareTo方法比较两个类的半径大小。
思考:参照上述做法定义矩形类Rectangle和ComparableRectangle类,在ComparableRectangle类中给出compareTo方法的实现,比较两个矩形的面积大小。
package com.xatu.接口;
public interface CompareObject {
public int compareTo(Object o);
class Circle {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
@Override
public String toString() {
return "半径" + radius;
}
}
class ComparableCircle extends Circle implements CompareObject {
public ComparableCircle(double radius) {
super(radius);
}
@Override
public int compareTo(Object o) {
if (o instanceof Circle) {// 如果不进行预判出现ClassCastException
if (this.getRadius() == ((Circle) o).getRadius()) {
return 0;
} else if (this.getRadius() < ((Circle) o).getRadius()) {
return -1;
} else {
return 1;
}
}
return 2;
}
}
class TestInterface {
public static void main(String[] args) {
CompareObject c1 = new ComparableCircle(10);// 可以使用多态和本态,优先使用多态(站高望远)
CompareObject c2 = new ComparableCircle(10);
int compRs = c1.compareTo(c2);
System.out.println(compRs);
switch (compRs) {
case 0:
System.out.println("相等");
break;
case 1:
System.out.println("右边大");
break;
case -1:
System.out.println("左边大");
break;
default:
break;
}
}
}
}