码迷,mamicode.com
首页 > 编程语言 > 详细

Java各种成员初始化顺序

时间:2017-07-24 13:28:58      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:--   parent   extends   ret   pre   blog   span   style   loader   

在其他博客看到过这种关于初始化顺序的文章,仔细一想,自己还真的不太清楚具体的顺序是什么样的,搞段代码测试一下:

class B extends A ,然后A类也就是父类里面有静态代码块,普通代码块,静态方法,静态成员变量,普通成员变量,普通方法。


public class LoaderOrderParent {

    static{

        System.out.println("父类--静态代码块");
    }
    {

        System.out.println("父类--代码块");
    }

    public static String staticStringParent=initStaticStringInParent();

    public String stringInParent=initStringInParent();

    public LoaderOrderParent(){

        System.out.println("父类--构造方法");
    }

    public static String initStaticStringInParent(){

        System.out.println("父类--初始化静态变量");
        return "initStaticStringInParent";
    }

    public String initStringInParent(){

        System.out.println("父类--初始化普通变量");
        return "initStringInParent";
    }
}



public class LoaderOrderChild extends LoaderOrderParent {

    public String stringInChild=initStringInChild();
    public static String staticStringInChild=initStaticStringInChild();
    {

        System.out.println("子类--方法块");
    }
    static {

        System.out.println("子类--静态方法块");
    }

    public LoaderOrderChild(){

        System.out.println("子类--构造方法");
    }

    public static String initStaticStringInChild(){

        System.out.println("子类--初始化静态变量");
        return "staticStringInChild";
    }

    public String initStringInChild(){

        System.out.println("子类--初始化普通变量");
        return "stringInChild";
    }


    public static void main(String[] args){

        new LoaderOrderChild();
    }
}

在子类中,执行main方法,new LoaderOrderChild();

 

输出结果为:

父类--静态代码块
父类--初始化静态变量
子类--初始化静态变量
子类--静态方法块
父类--代码块
父类--初始化普通变量
父类--构造方法
子类--初始化普通变量
子类--方法块
子类--构造方法

 

虽然子类的普通代码块写在静态代码块前面,但是还是静态代码库先执行

Java各种成员初始化顺序

标签:--   parent   extends   ret   pre   blog   span   style   loader   

原文地址:http://www.cnblogs.com/dpains/p/7227906.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!