很多构造顺序帖子中间,曾经见到过这样的争辩.
特意自己构造了2个类,大家来看看吧
package ThinkingInJava;
class A 
{
public void Draw(){};
public A()
{
Draw();
}
}
public class B extends A
{
String myContent="luyechen";
public void Draw()
{
System.out.println(myContent);
}
public B()
{
Draw();
}
public static void main(String[] args)
{
B b=new B();
}
}答案
http://blog.csdn.net/nihuajie05/archive/2008/04/29/2342937.aspx
呵呵,看看就好...说的不好的话...大家轻点拍

解决方案 »

  1.   

    搞不清楚构造顺序,最大的关系就是因为super()函数被省略了
    如果不省略的话
    public B()
    {
        super();
        Draw();
    }
    完整的构造函数是这样,这就应该很清楚了吧
    构造B的时候先构造A,(构造A的时候其实还先构造了Object)
      

  2.   

    关键看构造方法的第一行,如果调用了this();就不能有super();什么都没有的情况下,默认是super();加载顺序,分层加载,在cmd下用命令: javac -verbose xxx.java 就很明了了构造顺序,分层构造,先构造父类在子类,一个对象还没构造出来就已经确定了它的真实类型