定义一个接口用来实现两个对象的比较。
interface CompareObject{
public int compareTo(Object o); //若返回值是 0 , 代表相等; 若为正数,代表当前对象大;负数代表当前对象小
}
public interface CompareObject {
public int compareTo(Object o);
}
此处object为一类,将它作为形参,object为所有类的父类
定义一个Circle类,声明redius属性,提供getter和setter方法
class Circle {
private double radius;
public Circle() {
}
public Circle(double radius) {
this.radius = radius;
}
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
}
定义一个ComparableCircle类,继承Circle类并且实现CompareObject接口。在ComparableCircle类中给出接口中方法compareTo的实现体,用来比较两个圆的半径大小。
public class ComparableCircle extends Circle implements CompareObject {
//private Object Circle;
public ComparableCircle() {
}
public ComparableCircle(double radius) {
super(radius);
}
@Override
public int compareTo(Object o) {
if (o instanceof Circle) {
if(this.getRadius()==((Circle)o.getRadius()){
return 0;
}else if(this.getRadius()>((Circle)o.getRadius()){
return 1;
}else {
return -1;
}
}
return 2;
}
}
此处 if (o instanceof Circle) 则是将方法输入的形参与本类做比较,若他们不为同一类则返会2,若为同一类执行将圆的属性半径值进行比较,注意此时对=右边进行一次强转,再根据值进行比较
定义一个测试类InterfaceTest,创建两个ComparableCircle对象,调用compareTo方法比较两个类的半径大小。
public class InterfaceTest {
public static void main(String[] args) {
CompareObject c1=new ComparableCircle(1);
CompareObject c2= new ComparableCircle(2);
System.out.println(c1.compareTo(c2));
}
}
此处创建两个新的对象,并直接在构造方法中赋值,并调用方法进行比较,注意c1为当前对象,则值输出为-1