建議93:構造方法應初始化主要屬性和字段
型別的屬性應該在構造方法呼叫完畢前完成初始化工作。如果字段沒有在初始化器中設定初始值,那麼它就應該在構造方法中初始化。
型別一旦被例項化,那麼它就應該被視為具有完整的行為和屬性。
class在構造方法中,必須首先為ceo賦值。因為只要存在公司實體,那麼它首先就會有乙個ceo。speciala的初始化如下所示:company
;employee specialb;
public employee ceo
public
company()
;specialb = new employee() ;}}
employee speciala = new employee() ;上面演示的是乙個字段初始化。實際上,初始化器也屬於編譯器的語法糖,它在經編譯後,在構造方法的最開始處執行。也就是說,可以將初始化器理解為構造方法的一部分。
型別的其他引用型別欄位也應該在構造器中初始化,比如specialb,因為需要保證型別的其他地方用到該字段的時候不會因為它是null而產生混淆。
**:《編寫高質量**改善c#程式的157個建議》陸敏技
靜態初始化塊 初始化塊 構造方法
1.所有的靜態初始化塊都優先執行,其次才是非靜態的初始化塊和建構函式,它們的執行順序是 1 父類的靜態初始化塊 2 子類的靜態初始化塊 3 父類的初始化塊 4 父類的建構函式 5 子類的初始化塊 6 子類的建構函式 注意 1 此處的構造方法需要與自己的類名相同,2 靜態 初始化塊需要用 2.構造方法...
JAVA構造方法初始化順序
直接上例子 class window class house window w2 new window 2 void f window w3 new window 3 public class orderofinitialization 執行結果如下 window 1 window 2 window...
Python中構造方法和初始化方法
在python中建立乙個新式類時,一般都會定義乙個 init 方法,用來對類的例項進行初始化。但是 init 方法並不是類的構造方法,類中真正的構造方法是 new 方法。看看下面的例子 class test def init self print init method in format self...