Java实例化对象时的初始化

在实例化对象时会对对象所在的所有成员变量进行初始化

实例化化对象:类名() 对象名 = new 类名();

这时会调用(顺序如下)

1.父类的非静态代码块

{

......//用花括号包围的内容是非静态代码块

}

2.父类的构造函数

Public 父类名(){

.......//这里是父类的构造函数

}

3.子类的非静态代码块

4.子类的构造函数

会依次调用这几个方法

在这里还会有静态代码块:

Static{

......//这里面的内容就是静态代码块

}

因为静态代码是会先于main方法加载的

所以如果存在静态代码

就会在原先的顺序上最前面加上

1.父类静态代码块

2.静态代码块子类

class Father{
    static {
        System.out.println("父类静态代码块");
    }
    {
        System.out.println("父类非静态代码块");
    }
    public Father(){
        System.out.println("父类构造函数");
    }
}
public class InterfaceTest extends Father{
    static {
        System.out.println("子类静态代码块");
    }
    {
        System.out.println("子类非静态代码块");
    }
    public InterfaceTest(){
        System.out.println("子类构造函数");
    }
    public static void main(String[] args) {
        System.out.println("main方法");

//
        new InterfaceTest();

}

}

输出结果:

父类静态代码块

子类静态代码块

main方法

父类非静态代码块

父类构造函数

子类非静态代码块

子类构造函数

猜你喜欢

转载自www.cnblogs.com/wxgShareBlog/p/13194681.html