您的位置:首页 > 其它

程序执行顺序

2012-06-25 19:13 127 查看
public class TestA {
public TestA(String a){
System.out.println(a);
}
}
/**类B**/
public class TestB {
public TestB(String b){
System.out.println(b);
}
}
/**类 Parent **/
public class Parent {
private static TestA testA1 = new TestA("Parent的静态变量");
static {
System.out.println("Parent的静态初始化模块");
}
private TestA testA2 = newTestA("Parent变量");
{
System.out.println("Parent的初始化模块");
}
public Parent(){
System.out.println("Parent的构造函数");
}
}

/**Parent的子类SubClass**/
public class SubClass extends Parent{
private static TestA testA1 = new TestA("SubClass的静态变量1");
static {
System.out.println("SubClass的静态初始化模块1");
}
private static TestA testA2 = new TestA("SubClass的静态变量2");
static {
System.out.println("SubClass的静态初始化模块2");
}
private TestA testA3 = newTestA("SubClass变量1");
{
System.out.println("SubClass的初始化模块1");
}
private TestA testA4 = newTestA("SubClass变量2");
{
System.out.println("SubClass的初始化模块2");
}
public SubClass(){
System.out.println("SubClass的构造函数");
}
publicstatic void main(String[] args) {
SubClass subClass = new SubClass();
}
}

打印结果如下:

Parent的静态变量
Parent的静态初始化模块

SubClass的静态变量1

SubClass的静态初始化模块1

SubClass的静态变量2

SubClass的静态初始化模块2

Parent变量

Parent的初始化模块

Parent的构造函数

SubClass变量1

SubClass的初始化模块1

SubClass变量2

SubClass的初始化模块2

SubClass的构造函数

说明 :

1.静态变量与静态模块是最先初始化的,因为它是属于类的变量和模块.

2.Parent的构造器要先于它的子类,这一点是肯定的,但Parent的变量,初始化模块要先于它的子类,这一点可能理解起来有点困难,但我们只要知道父类的构造器先于子类,它的变量与模块也是理所当然的,这样理解起来会比较合理.

3.静态变量与静态模块的初始化顺序是根据在类里面定义的顺序,同理变量化初始化模块的顺序也是根据类里面定义的顺序(上面结果的红色部门)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: