首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

劳烦能解释一下这个程序的执行过程,多谢了.小弟新手哈!求见谅

2013-09-29 
劳烦大虾能解释一下这个程序的执行过程,谢谢了.小弟新手哈!!求见谅public class $$$$$$$$$$$$$$$$$$$$$$$$

劳烦大虾能解释一下这个程序的执行过程,谢谢了.小弟新手哈!!求见谅

public class $$$$$$$$$$$$$$$$$$$$$$$$$$$4 {
public static void main(String[] args){
A11 a = new B11();
}

}
class A11{
A11(){test();}
public void test(){
System.out.println("HelloWorld!");
}
}
class B11 extends A11{
int i =10;
B11(){super();}
public void test(){
System.out.println(i);
}
}


能拜托各位大神解释一下他的运行流程么???
[解决办法]
其实,调用完后还有其它调用.但那些你可以不去看.简单的理解就可以.不要想太多.
如果你想了解更详细,加断点,debug一下.就知道了调用顺序和次数.
[解决办法]
把A11里面的构造方法改为:
[code]
    A11(){
    System.out.println(" before All.test");
    test();
    System.out.println(" after All.test");
    }
[/code]
这样便于看运行过程:
结果为:
 before All.test
0
 after All.test

,因此可以知道,先调用的是父类的构造方法,然后执行了里面的过程,先输出了before这一条,然后执行了test()方法(而此处的test()是对子类的调用,里面由于i还没有被初始化,所有默认为0),之后再输出after.如果把B11里面的i改为static的话,那么输出结果应该是10,因为子类的静态变量的赋值在父类构造方法之前;
具体执行过程大致为:
父类的静态成员赋值和静态块 
子类的静态成员和静态块 
父类的构造方法 
父类的成员赋值和初始化块 
父类的构造方法中的其它语句 
子类的成员赋值和初始化块 
子类的构造方法中的其它语句 

热点排行