package com.liubingfei.test; /** * @author LiuBingFei * @desc 测试java类中静态代码块,动态代码块,构造方法,普通方法执行顺序,继承父类时的执行顺序。 * 一、没有继承时候的执行顺序 * 1. 静态代码块---编译的时候执行 * 2. 动态代码块 * 3. 构造方法 * 4. 普通方法 * 二、有继承时候的执行顺序 * 1. 父类的静态代码块 * 2. 子类的静态代码块 * 3. 父类的动态代码块 * 4. 父类的无参构造方法 * 5. 子类的动态代码块 * 6. 子类的有参构造方法 * 7. 子类的普通方法 * @date 2020/3/2 20:59 * @return */ public class sequence extends Father{ private static String name; static { System.out.println("执行静态代码块"); } { System.out.println("执行动态代码块"+name); } public sequence() { System.out.println("执行无参构造方法"+name); } public sequence(String name){ this.name = name; System.out.println("执行有参构造方法"+name); } public void test(){ System.out.println("执行普通方法"+name); } public static void test2(){ System.out.println("执行静态方法"); } public static void main(String[] args){ sequence seq = new sequence("liubingfei"); seq.test(); //test2(); } }
总结:
* 一、没有继承时候的执行顺序
* 1. 静态代码块---编译的时候执行
* 2. 动态代码块
* 3. 构造方法
* 4. 普通方法
* 二、有继承时候的执行顺序
* 1. 父类的静态代码块
* 2. 子类的静态代码块
* 3. 父类的动态代码块
* 4. 父类的无参构造方法
* 5. 子类的动态代码块
* 6. 子类的有参构造方法
* 7. 子类的普通方法