作個簡單筆錄,就當是重溫下基礎知識。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).執行子類的構造方法。變量