本帖最后由 张涛的狂怒 于 2014-8-12 10:09 编辑
/**
* 10.TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,
* 还是使用的子类的compareTo方法,还是抛异常!
*/
import java.util.TreeSet;
/* compareTo其实就是依次比较两个字符串ASC码。如果两个字符串完全一样,则返回0。
* 父类中使用了compareTo方法,那么子类继承的时候会覆写父类中的方法。
* 也就是说子类中也就不能存在自己的compareTo方法。如果同时放入父类和子类的实例对象
* 比较的是父类中的compareTo方法。
*
*/
class Parent implements Comparable {
private int age = 0;
public Parent(int age){
this.age = age;
}
public int compareTo(Object o) {
System.out.println("method of parent");
Parent o1 = (Parent)o;
return age>o1.age?1:age<o1.age?-1:0;
}
}
class Child extends Parent{
public Child(){
super(3);
}
public int compareTo(Object o) {
System.out.println("method of child");
Parent o1 = (Parent)o;//传入的是父类对象的实例
// Child o1 = (Child)o;//调用的也是父类的compareTo
return 1;
}
}
public class Test10 {
public static void main(String[] args) {
TreeSet set = new TreeSet();
set.add(new Parent(3));
set.add(new Child());
set.add(new Parent(4));
System.out.println(set.size());
}
} |