Scott@JAVA

Java, 一杯浓浓的咖啡伴你到深夜

初始化

当Java程序运行时,需要某一个类,但该类还没有载入内存,则Java程序将该类装入内存,然后立即执行类中定义的类初始化块,执行次序就是类初始化定义的次序,然后执行对象初始化块,执行次序是定义的次序,最后执行类的构造函数,继续对对象进行初始化。

例:
class A {
    
public A() {
        System.out.println(
"A的构造函数");
    }


    
{
        System.out.println(
"A的动态初始化块");
    }


    
static {
        System.out.println(
"A的静态初始化块");
    }

}


class B extends A {
    
public B() {
        System.out.println(
"B的构造函数");
    }


    
{
        System.out.println(
"B的动态初始化块");
    }


    
static {
        System.out.println(
"B的静态初始化块");
    }

}


public class Test {
    
public static void main(String[] args) {
        System.out.println(
"第一次生成类B的对象时输出");
        
new B();
        System.out.println(
"第二次生成类B的对象时输出");
        
new B();
    }

}

程序运行结果如下:

第一次生成类B的对象时输出
A的静态初始化块
B的静态初始化块
A的动态初始化块
A的构造函数
B的动态初始化块
B的构造函数
第二次生成类B的对象时输出
A的动态初始化块
A的构造函数
B的动态初始化块
B的构造函数

posted on 2007-01-24 19:29 Scott@JAVA 阅读(400) 评论(1)  编辑  收藏 所属分类: Jave SE 6

Feedback

# re: 初始化 2007-01-25 10:44 小车马

总结的很不错,thinking in java 里更详细些,呵呵

潜力贴论坛 http://content.uu1001.com  回复  更多评论   



只有注册用户登录后才能发表评论。


网站导航: