举例说明:
class A{
public int Avar;
public A(){
System.out.println("AAA");
dosomething();
}
public void dosomething(){
Avar=1111;
System.out.println("a.dosomething()");
}
}public class order2 extends A
{
public int Bvar=2222;
public order2(){
System.out.println("BBB");
dosomething();
System.out.println("Avar="+Avar);
}
public void dosomething(){
System.out.println("Bvar="+Bvar);
}
public static void main(String[] args){
new order2();
}
}
执行结果是
AAA
Bvar=0
BBB
Bvar=2222
Avar=0记住继承类的初值化的次序:
1。进入基类CONSTRUCTOR,初值化基类变量:
  进入A的CONSTRUCTOR,Avar = 0;2。执行基类CONSTRUCTOR的BODY:
  System.out.println("AAA"); ==> 输出  AAA
  dosomething(); ==> 调用 B::dosomething(),继承类变量还没有初值化,确省值是0
                  ==>输出  Bvar=03。初值化继承类变量
  Bvar = 2222
  
4。执行继承类CONSTRUCTOR的BODY
    System.out.println("BBB");  ==> 输出BBB
    dosomething();  调用 B::dosomething(),继承类变量已经初值化,Bvar = 2222
                  ==>输出  Bvar=2222
    System.out.println("Avar="+Avar);
                  ==>输出  Avar=0

解决方案 »

  1.   

    为什么输出的不是
    AAA
    456
    123
    CCC
    BBB 
      

  2.   

    还有this(12)里面的12起什么作用??
      

  3.   

    不是说了输出456的是父类的静态程序块,先与父类的构造函数-》输出AAAthis(12)是指调用本类的构造方法,参数是整形或其他可能的有12的类型;本利就是调用B(int x);你可以试试改成其它整数。
      

  4.   

    如果你在B(int x)的开头加上this();你就会发现可爱的死循环。
      

  5.   

    System.out.println("AAA");
    }
    {
    System.out.println("456");
    他们两个不是同级别的吗?
      

  6.   

    明白了
    已经加分了
    呵呵ycats(加菲猫) 能做个朋友吗
    我的qq是1818477