记住继承类的初值化的次序:
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。进入基类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
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货