项目场景:
定义一个接口用来实现两个对象的比较
interface CompareObject{
public int compareTo(Object o); //若返回值是 0 , 代表相等; 若为正数,代表当前对象大;负数代表当前对象小
}
定义一个Circle类,声明redius属性,提供getter和setter方法
定义一个ComparableCircle类,继承Circle类并且实现CompareObject接口。在ComparableCircle类中给出接口中方法compareTo的实现体,用来比较两个圆的半径大小。
定义一个测试类InterfaceTest,创建两个ComparableCircle对象,调用compareTo方法比较两个类的半径大小。
问题描述:
在compareTo(int o)方法中,在测试类引用时,直接a1.compareTo(a2)调用,但是我的方法中只传进了一个值,不知道怎么比较。
@Override
public int compareTo(int o) {
if (super.getRadius()==o){
return 0;
}else if (super.getRadius()>o){
return 1;
}else {
return -1;
}
}
public static void main(String[] args) {
ComparableCircle a1 = new ComparableCircle(3);
ComparableCircle a2 = new ComparableCircle(4);
a1.setRadius(2);//之前这两步就是一句a1.compareTo(a2)
a2.setRadius(3);//导致在compareTo方法中,我认为只有一个参数
System.out.println(a1.compareTo(a2.getRadius()));
//注意这个调用方法 灵活运用getRadius、setRadius,还有super的调用
}
原因分析:
没有将getRadius、setRadius、super灵活的运用起来
解决方案:
注意super的用法,也可调用父类的方法