[知了堂学习笔记]_初始化顺序

Posted 陈远波

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[知了堂学习笔记]_初始化顺序相关的知识,希望对你有一定的参考价值。

在我们每次new一个对象的时候,对象都会被初始化,但是他们初始化的顺序又是怎样呢?现在我以存在继承与不存在继承的代码给大家演示。

一、对于没有继承的初始化的顺序(静态变量,静态块、构造函数、变量)

package test;
//没有继承情况下的代码
public class test5 {
    //静态变量
    private static String st="静态变量";
    //静态块
    static{
        System.out.println(st);
        System.out.println("静态块");
    }
    //
    {
        System.out.println("块");
    }
    //常量
    private String st2="变量";
    //构造函数
    test5(){
        System.out.println(st2);
        System.out.println("构造函数");
    }
    public static void main(String[] args) {
        new test5();
    }    
}

该代码的输出结果为:

静态变量
静态块

变量
构造函数

由此可得出没有继承下的初始化顺序。

二、当存在继承的时候的初始化如下:

package test;
//子类代码
public class test6 extends test5 {
    //静态变量
    private static String st="子类静态变量";
    //静态块
    static{
        System.out.println(st);
        System.out.println("子类静态块");
    }
    //
    {
        System.out.println("子类块");
    }
    //常量
    private String st2="子类变量";
    //构造函数
    test6(){
        System.out.println(st2);
        System.out.println("子类构造函数");
    }
    public static void main(String[] args) {
        new test6();
    }    
    
}
//父类代码
package test;
//没有继承情况下的代码
public class test5 {
    //静态变量
    private static String st="父类静态变量";
    //静态块
    static{
        System.out.println(st);
        System.out.println("父类静态块");
    }
    //
    {
        System.out.println("父类块");
    }
    //常量
    private String st2="父类变量";
    //构造函数
    test5(){
        System.out.println(st2);
        System.out.println("父类构造函数");
    }
}

输出打印的结果为:

父类静态变量
父类静态块
子类静态变量
子类静态块
父类块
父类变量
父类构造函数
子类块
子类变量
子类构造函数

  从而从我打印的语句上就很明显的得出存在继承时的初始化顺序。

  以上是我这讲的主要内容,若以上知识点讲解的不够仔细的请各位大神多多包涵和指正,需要学习更多关于软件知识的博友可以进入知了堂社区:http://www.zhiliaotang.com/portal.php

 

以上是关于[知了堂学习笔记]_初始化顺序的主要内容,如果未能解决你的问题,请参考以下文章

[知了堂学习笔记]_mysql函数

[知了堂学习笔记]_纯JS制作《飞机大战》游戏_第1讲(实现思路与游戏界面的实现)

[知了堂学习笔记]_用JS制作《飞机大作战》游戏_第1讲(素材查找和界面框架搭建)

[知了堂学习笔记]_JSON数据操作第1讲(初识JSON)

[知了堂学习笔记]_Jquery_Validate 表单校验的使用

[知了堂学习笔记]_eclipse引入svn插件,并将项目同步到svn