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);导致相关对象无法引用爷爷类的方法