Java面試題 靜態塊 塊 建構函式的初始化順序

2021-06-20 16:18:35 字數 1263 閱讀 7787

自己做了幾遍,每次的輸出結果都不一樣。有時候父類的構造方法中的兩個輸出中竟然會穿插子類的非靜態類方法體。按照網上的做法,沒有再出現不穩定的情況。索性就這樣總結了:

1. 單一類中:靜態變數、靜態塊、普通變數、普通塊、構造方法;

2. 有繼承的子類中:先父後子。子類的靜態變數和靜態塊會插隊在父類靜態塊的後面,以後才嚴格尊重父親大人。

建立順序:

1。按照順序執行父類靜態變數、靜態塊

2。按照順序執行子類靜態變數、靜態塊

3。構造父類:按照順序執行父類的普通變數、普通塊

執行父類的建構函式

4。構造子類:按照順序執行子類的普通變數、普通塊

執行子類的建構函式

示例如下:(需要用debug進行除錯才可以看到變數的順序)

package ms;

public class ms_extends

}

class a

public a()

static

}

class b extends a

public b()

static

}

執行結果:

■父類 - 靜態初始塊 - 位置是建構函式前

■父類 - 靜態初始塊 - 位置是建構函式後

◆子類 - 靜態初始塊 - 位置是建構函式前

◆子類 - 靜態初始塊 - 位置是建構函式後

■父類 - 普通初始塊 - 位置是建構函式前

■父類 - 普通初始塊 - 位置是建構函式後

■父類 - 建構函式

◆子類 - 普通初始塊 - 位置是建構函式前

◆子類 - 普通初始塊 - 位置是建構函式後

◆子類 - 建構函式

函式面試題

面試題的理解文件 第一題 var num function fun num 18 fun 理解 結果是undefined,但是num的值為18,函式裡面的num的值為20,這串 是由上到下的循序執行的,而這裡的num如果在函式裡面則會去找自己裡面的,如果有則會使用自己裡面的num,如果沒有則會去父級...

函式面試題

var a 1 function b b console.log a 輸出 1 解析 輸出的a是window下的 function foo return bar function bar alert foo 輸出 8 解析 涉及預編譯問題,兩個方法名同名,後宣告的覆蓋之前的所以這裡輸出8 funct...

Java面試題(一)

1 1 2 3 100構建乙個函式。答案 public int sum int n 2 描述冒泡演算法。答案 基本思路 對尚未排序的各元素從頭到尾依次比較相鄰的兩個元素是否逆序 與欲排順序相反 若逆序就交換這兩元素,經過第一輪比較排序後便可把最大 或最小 的元素排好,然後再用同樣的方法把剩下的元素逐...