Chinaunix首页 | 论坛 | 博客
  • 博客访问: 714984
  • 博文数量: 147
  • 博客积分: 6010
  • 博客等级: 准将
  • 技术积分: 1725
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-22 10:36
文章分类

全部博文(147)

文章存档

2011年(1)

2010年(1)

2009年(35)

2008年(110)

我的朋友

分类: Java

2009-11-26 11:13:39

Java初始化顺序
先看一个例子:
/**类A**/ 
class TestA {  
    public TestA(String a){  
        System.out.println(a);  
    }  
}  
/**类B**/ 
 class TestB {  
    public TestB(String b){  
        System.out.println(b);  
    }  
}  
/**类 Parent **/ 
 class Parent {  
    private static TestA testA1 = new TestA("Parent的静态变量");  
    static {  
        System.out.println("Parent的静态初始化模块");  
    }  
    private  TestA testA2 = new TestA("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 = new TestA("SubClass变量1");  
    {  
        System.out.println("SubClass的初始化模块1");  
    }  
    private  TestA testA4 = new TestA("SubClass变量2");  
    {  
        System.out.println("SubClass的初始化模块2");  
    }  
    public SubClass(){  
        System.out.println("SubClass的构造函数");  
    }  
    public static 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的构造函数

总结:
Java初始化的顺序如下:
父类静态初始化---->子类静态初始化---->父类初始化块---->父类构造方法---->子类初始化块---->子类构造
阅读(1465) | 评论(0) | 转发(0) |
0

上一篇:sql

下一篇:pl/sql远程连接oracle

给主人留下些什么吧!~~