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

JAVA 45 2017-10-09 12:32

一、对于没有继承的初始化的顺序

静态变量,静态块、构造函数、变量

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("父类构造函数");
    }}

输出打印的结果为:
父类静态变量
父类静态块
子类静态变量
子类静态块
父类块
父类变量
父类构造函数
子类块
子类变量
子类构造函数

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

关注我们 一起学习

[知了堂学员笔记]初始化顺序-JEESNS
知了堂
文章评论