構造方法 類的初始化塊以及類字段的初始化順序

2022-09-10 12:57:16 字數 774 閱讀 9715

首先,以下**為何無法通過編譯?哪兒出錯了?
public class test 

} class foo

}

如果類提供了乙個自定義的構造方法,將導致系統不再提供預設構造方法。

​ 如果乙個類中既有初始化塊,又有構造方法,同時還設定了字段的初始值,誰說了算?

class initializeblockclass 

public int field = 100;

public initializeblockclass(int value)

public initializeblockclass()

}

這是乙個生造出來展示j**a語法特性的示例類,在實際開發中不要這樣寫**,應該盡量保證乙個欄位只初始化一次!

​ 如果使用上面定義的類,思考一下**的輸出結果:

public static void main(string args)
規律(類字段的初始化順序)

執行類成員定義時指定的預設值或類的初始化塊,到底執行哪乙個要看哪乙個「排在前面」。

執行類的建構函式。

類的初始化塊不接收任何的引數,而且只要一建立類的物件,它們就會被執行。因此,適合於封裝那些「物件建立時必須執行的**」。

靜態初始化塊 初始化塊 構造方法

1.所有的靜態初始化塊都優先執行,其次才是非靜態的初始化塊和建構函式,它們的執行順序是 1 父類的靜態初始化塊 2 子類的靜態初始化塊 3 父類的初始化塊 4 父類的建構函式 5 子類的初始化塊 6 子類的建構函式 注意 1 此處的構造方法需要與自己的類名相同,2 靜態 初始化塊需要用 2.構造方法...

類欄位初始化

對類的字段的初始化主要有以下三種方式 1.通過宣告對應字段直接給定該字段的初始值 此情況適用於所有的物件都具有乙個相同的值,或者都是有相同的形式的值 view code public class initiatefield 2.通過建構函式來設定類的字段的值 view code public cla...

類的初始化(建構函式)

1.類成員為const型別 2.類成員為引用型別 include using namespace std class a void print val private const inti intp int j int main int argc char argv 究其因 const物件或引用只能...