java类初始化顺序

2019-02-12  本文已影响0人  zoterap

结论

验证代码

package com.zoterap.javabasic.classinit;

public class Base {

    /**
     * 1. 「基类」的静态代码块&静态成员变量,按照先后顺序执行
     */
    //-----基类静态代码块 BEGIN-----
    static {
        System.out.println("基类静态代码块1");
    }

    private static String staticValue = LogUtil.print("基类静态成员变量");

    static {
        System.out.println("基类静态代码块2");
    }
    //-----基类静态代码块 END-----

    /**
     * 3. 「基类」代码块&成员变量,按照先后顺序执行
     */
    //-----基类代码块 BEGIN-----
    {
        System.out.println("基类代码1");
    }

    private String value = LogUtil.print("基类成员变量");

    {
        System.out.println("基类代码2");
    }
    //-----基类代码块 END-----

    /**
     * 4. 「基类」构造函数
     */
    Base() {
        System.out.println("基类构造函数");
    }

    static class Son extends Base {

        /**
         * 2. 「子类」的静态代码块&静态成员变量,按照先后顺序执行
         */
        //-----子类静态代码块 BEGIN-----
        static {
            System.out.println("「子类」静态代码块1");
        }

        private static String staticValue = LogUtil.print("「子类」静态成员变量");

        static {
            System.out.println("「子类」静态代码块2");
        }
        //-----子类静态代码块 BEGIN-----


        /**
         * 5. 「子类」代码块&成员变量,按照先后顺序执行
         */
        //-----子类代码块 BEGIN-----
        {
            System.out.println("「子类」代码块1");
        }

        private String value = LogUtil.print("「子类」成员变量");

        {
            System.out.println("「子类」代码块2");
        }
        //-----子类代码块 END-----

        /**
         * 6. 「子类」构造函数
         */
        Son() {
            System.out.println("「子类」构造函数");
        }
    }

    public static void main(String[] args) {
        new Son();
    }

}

上一篇 下一篇

猜你喜欢

热点阅读