Java接口中遇到的问题

package exer3;

public class ComparebleCircle extends Circle implements CompareObject{
    public ComparebleCircle(double radius){
        super(radius);
    }
    public int compareTo(Object o){
        if(this == o){
            return 0;
        }
        if(o instanceof ComparebleCircle){
            ComparebleCircle c = (ComparebleCircle)o;
            System.out.println("this的c1:"+this.getRadius());
            System.out.println("c2:"+c.getRadius());
            //错误的(有漏洞):
            //return (int)(this.getRadius()-c.getRadius());
            //正确的:
            if(this.getRadius()>c.getRadius()){
                return 1;
            }else if(this.getRadius()<c.getRadius()){
                return -1;
            }else {
                return 0;
            }
        }else
            return 0;
        // throw new RuntimeException("传入的数据类型不匹配");
    }

}

这是父类

package exer2;


import exer3.ComparebleCircle;

public class ComparableCircleTest {
    public static void main(String[] args) {
        ComparebleCircle c1 = new ComparebleCircle(4.2);
        ComparebleCircle c2 = new ComparebleCircle(5.1);
        ComparebleCircle c3 = new ComparebleCircle(6.2);
    int compareValue = c1.compareTo(c3);
        if(compareValue>0){
            System.out.println("c1对象大");
        }else if(compareValue<0){
            System.out.println("c2对象大");
        }else {
            System.out.println("一样大" );
        }
}
}

在对项目进行测试时,在测试类中造对象,所有的对象都是0,反复检查无果,原来是在父类构造器中未加入super(radius);导致相关对象无法引用爷爷类的方法

posted @ 2022-09-27 10:45  高槐玉在隐身  阅读(41)  评论(0)    收藏  举报