静态块、动态块、构造函数、继承函数等的执行顺序

来源:互联网 发布:大众网络报电子版 编辑:程序博客网 时间:2024/06/13 01:43


不涉及继承

静态代码块动态代码块构造函数



package demo01;

public class Demo02 {

    public Demo02(){
        System.out.println("构造函数");
    }
    
    static{
        System.out.println("静态代码块");
    }
    
    {
        System.out.println("动态代码块");
    }
    
    
    
    public static void main(String[] args) {
        new Demo02();
        new Demo02();
    }
    
}
输出结果:

静态代码块
动态代码块
构造函数

动态代码块
构造函数



涉及继承


package demo01;

import org.junit.Test;

public class Demo02 {

    public static void main(String[] args) {
        Zi z = new Zi();
        System.out.println("---------------------");
        Zi z1 = new Zi();
    }
}

//父类
class Fu{
    
    public Fu(){
        System.out.println("父类构造函数");
    }
    
    static{
        System.out.println("父类静态代码块");
    }
    
    {
        System.out.println("父类动态代码块");
    }
}

//子类
class Zi extends Fu{
    
    public Zi(){
        System.out.println("子类构造函数");
    }
    
    static{
        System.out.println("子类静态代码块");
    }
    
    {
        System.out.println("子类动态代码块");
    }
    
    
    
}


输出结果:

父类静态代码块
子类静态代码块
父类动态代码块
父类构造函数
子类动态代码块
子类构造函数
---------------------
父类动态代码块
父类构造函数
子类动态代码块
子类构造函数


结论:

1.静态代码块只执行一次

2.静态的东西是属于类的,非静态的东西是属于实例的。 

3.静态的先执行,然后才是非静态的。


0 0