每日一个bug

项目场景:

定义一个接口用来实现两个对象的比较
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的用法,也可调用父类的方法

猜你喜欢

转载自blog.csdn.net/m0_51064043/article/details/120736778