先進行細分:
類的成員分為:字段、屬性、方法、構造方法
成員的修飾符:靜態成員、例項成員
層次結構:父類、子類
先不考慮繼承關係,執行順序為:
靜態字段
靜態構造方法
例項字段
例項構造方法
屬性和方法是在呼叫的時候才執行,這裡就不考慮了。如何理解上面的執行過程?假如讓我來設計執行過程,我該如何考慮,依據是什麼?
首先,靜態的東西是大家共享的,也就是相同的。應該先關心共享的東西,再關係個人的東西。「先公後私」,呵呵。
其次,例項化之前,應該先初始化自己的內部資料。
現在考慮繼承關係,執行順序為:
子類的靜態字段
子類的靜態構造方法
子類的例項字段
父類的靜態字段
父類的靜態構造方法
父類的例項字段
父類的例項構造方法
子類的例項構造方法
在子類的例項欄位和子類的例項構造方法之間,加入了父類的執行順序。這個其實也很好理解:在子類的例項構造方法之前,確實需要知道父類的資訊,因為子類要從父類那裡繼承一些東西。這就好比,沒有老子,哪來的兒子呢,呵呵。
這裡需要特別注意的是,並不是每次例項化都是上面的順序。因為靜態的成員只是在第一次例項化的時候執行,以後再例項化都不會在執行。很好理解,靜態的成員意味著大家共享,且只有這乙個。第一次例項化得到靜態成員後,以後大家都共享,再次例項化,沒有必要也不允許執行靜態成員的部分。
C 類例項化執行順序
確定類例項化時內部內容的執行順序,同時也考慮到繼承的關係。定義乙個父類parentclass和乙個子類subclass。父類 public class parentclass static int s 2 static public string name static parentclass pu...
類的例項化順序
首先列出例項化的順序 具體大家可以自行通過 進行驗證。在例項化的時候,可能會出現成員變數例項化類,那麼成員例項化。假造到public father father new father 時,在去初始化father這類的public father father new father 就很容易程式設計死迴...
類的例項化順序
package com.company.demo1 public class classinit class a public string s1 prtstring a的成員變數.public static string s2 prtstring a的static變數.protected a pu...