| 本帖最后由 张涛的狂怒 于 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());
 }
 }
 |