Java 類的成員初始化順序

作個簡單筆錄,就當是重溫下基礎知識。java

1.先看代碼:函數

  

package com.test;

public class Test {
	
    public static void main(String[] args) {
        Son s = new Son();
    }
 
}
 
class Parent{
 
	int parent = 10;
	
    {
        System.out.println("parent中的初始化塊");
    }
    static{
        System.out.println("parent中static初始化塊");
    }
     
    public Parent(){
        System.out.println("parent構造方法");
    }
}
 
class Son extends Parent{
	int son = 10;
	
    {
        System.out.println("son中的初始化塊");
    }
     
    static{
    	
        System.out.println("son中的static初始化塊");
        
    }
     
    public Son(){
        System.out.println("son構造方法");
    }
     
}

  執行結果:對象

  

2.變量和靜態變量blog

  從上面咱們能夠看到靜態語句塊普通語句塊和構造函數的執行順序,那麼成員變量和靜態變量又是怎麼實例化的呢?class

 

可見實例成員和實例初始化塊,按在代碼中出現的順序依次執行test

3.總結基礎

  屬性、方法、構造方法和自由塊都是類中的成員,在建立類的對象時,類中各成員的執行順序:
  1).父類靜態成員和靜態初始化快,按在代碼中出現的順序依次執行。
  2).子類靜態成員和靜態初始化塊,按在代碼中出現的順序依次執行。
  3). 父類的實例成員和實例初始化塊,按在代碼中出現的順序依次執行。
  4).執行父類的構造方法。
  5).子類實例成員和實例初始化塊,按在代碼中出現的順序依次執行。
  6).執行子類的構造方法。變量

相關文章
相關標籤/搜索