類成員之四 初始化塊

2021-07-28 15:02:48 字數 1087 閱讀 7596

作用:在構造器之前執行的一段**,它的用處是,如果一段初始化處理**對所有物件完全相同,且無須接受任何引數,就可以把這段提取到初始化塊中。系統將在類初始化階段執行靜態初始化塊,而不是在建立物件時才執行。因此靜態初始化塊總是比普通初始化塊先執行。

程式執行順序:

所有類的靜態初始化塊(從父類自頂向下) -> 所有類的普通初始化塊然後接著類的構選器(從父類自頂向下)

**:

package com.v512.main3;

class main0

public

main0(int a)

}public

class

main

extends

main0

static

public

static

void

main(string args)

}

執行結果:

main0-static block

main-static block

main0-block

main0-costructer

main block

main-costructer

非靜態**塊:

1.可以有輸出語句。

2.可以對類的屬性、類的宣告進行初始化操作。

3.可以呼叫靜態的變數或方法。

4.若有多個非靜態的**塊,那麼按照從上到下的順序依

次執行。

5.每次建立物件的時候,都會執行一次,且先於構造器執行。

靜態**塊:

1.可以有輸出語句。

2.可以對類的屬性、類的宣告進行初始化操作。

3.不可以對非靜態的屬性初始化。即:不可以呼叫非靜態的屬

性和方法。

4.若有多個靜態的**塊,那麼按照從上到下的順序依次執行。

5.靜態**塊的執行要先於非靜態**塊。

6.靜態**塊只執行一次。

類成員初始化

在類內部 初始化的順序 靜態的成員變數 普通的成員變數 構造器的呼叫。在派生類中 初始化的順序 呼叫基類的構造器 按宣告順序呼叫成員的初始化方法 呼叫派生類構造器主體 大多數類的初始化都是按照這些順序結合在一起的。下面是乙個例子 public class test extends sub publi...

類成員初始化

一 預設呼叫的無參建構函式 include include using namespace std class studentid class student int main 8 91011class student 20 2122 intmain 執行結果 重新設計建構函式,對s物件進行初始化,...

java類的成員初始化順序和初始化塊知識

屬性 方法 構造方法和自由塊都是類中的成員,在建立類的物件時,類中各成員的執行順序 1.父類靜態成員和靜態初始化快,按在 中出現的順序依次執行。2.子類靜態成員和靜態初始化塊,按在 中出現的順序依次執行。3.父類的例項成員和例項初始化塊,按在 中出現的順序依次執行。4.執行父類的構造方法。5.子類例...