日期:2014-05-20  浏览次数:20700 次

Java的实例化问题
import java.util.TreeSet;

public class TreeSetTest {
/**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
TreeSet set = new TreeSet();
//set.add(new Parent(3));
//set.add(new Parent(3));
set.add(new Child());
//set.add(new Child());
set.add(new Parent(4));
set.add(new Parent(4));
System.out.println(set.size());
}
}

 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) {

// TODO Auto-generated method stub
System.out.println("method of child");
// Child o1 = (Child)o;
return 1;
}
}

各位热心人看一下,子类实例化,但是父类还实现了接口,到底是什么一个顺序?
Java 对象 实例

------解决方案--------------------
关键还是看compareTo方法的执行的情况。
------解决方案--------------------
我自己是这么分析的,首先先给你引入个重写的例子

public class TestParentChild
{
public static void main(String[] args)
{
new Test2().say();
}
}

class Test1
{
public void say()
{
System.out.println("Parent");
}
}

class Test2 extends Test1
{
@Override
public void say()
{
System.out.println("Child");
}
}


//结果:Child

再回来说你的那个例子

set.add(new Child());
就用Child里面的实现,Child继承自父类也实现了接口Comparable
通过这样Comparable comparable = (Comparable) new Child();可以验证