举例说明:
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
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
AAA
456
123
CCC
BBB
}
{
System.out.println("456");
他们两个不是同级别的吗?
已经加分了
呵呵ycats(加菲猫) 能做个朋友吗
我的qq是1818477