java初始化構造器中呼叫其它方法

2021-06-26 17:13:13 字數 695 閱讀 2920

當繼承的方法時,如果都有其本省的構造方法,那麼執行順序是: (

1)在其它任何事物發生之前,將分配給物件的儲存空間初始化為二進位制的0

(2)從最初始的基類先去執行最初始基類的構造方法 (

3)其後按宣告順序呼叫成員的初始化方法。 (

4)呼叫匯出類構造器的主題

也就是如果要呼叫構造器內部的乙個動態繫結方法,就要用到那個方法的被覆蓋後的定義,這個呼叫效果可能相當難於預料,因為被覆蓋的方法在物件被完全構造之前就被呼叫。也就是如果子類

a繼承父類b,在

b的構造方法中呼叫了乙個方法,該方法在

a中被重寫了,那麼會直接呼叫

a中的方法,但是由於是被

b調的,所以開始的時候

a中的方法引數可能沒有被初始化,這樣就會出現問題

所以編寫構造器有效準則:用盡可能簡單的方法使物件進入正常狀態,如果可以的話避免呼叫其它方法,在構造器中唯一可以安全呼叫的方法是基類中的

final

(或private

)方法

publicclassconstructors }

classgraph

graph() }

classgraph1extendsgraph

voiddraw() }

java初始化構造函式呼叫順序

類初始化時構造函式呼叫順序 1 初始化物件的儲存空間為零或 null 值 2 呼叫父類建構函式 3 按順序分別呼叫類成員變數和例項成員變數的初始化表示式 4 呼叫本身建構函式。例子 public class dollar extends money public static void main s...

java初始化構造函式呼叫順序

直接舉例說明,看下面程式和結果。class helloa 父類塊 父類靜態塊 static public class hellob extends helloa 塊 靜態塊 static public static void main string args 執行結果 static a static...

構造器初始化

構造器初始化 1.初始化順序 即使變數定義分散於方法定義之間,它仍會在任何方法 包括構造器 被呼叫之前得到初始化。變數定義的先後順序決定了初始化的順序 例 package clear class window class house window w2 new window 2 void f win...