2017-07-13 182 views
2

標題解釋了我相信的一切。在C#中,我現在意識到無論派生類中的構造函數是調用基類構造函數,無論它是顯式調用還是隱式默認構造函數。我的問題是爲什麼?我認爲這是因爲派生類需要創建基類的對象,但爲什麼?爲什麼派生類需要使用基類構造函數

回答

9

我認爲這是因爲派生類需要創建基類的對象,但爲什麼?

派生類的實例是基類的一個實例。如果你對構建動物時發生的事情有規定,並且你正在構建長頸鹿,那麼你必須執行構建動物的規則。在C#中,該機制是「調用基類構造函數」。

9

派生類是基類加上派生類添加的額外事物。

您仍需要一些初始化基類部分的代碼,以便您可以在頂部添加額外的部分。對基礎構造函數的調用是初始化發生的地方。

1

比方說,這輛車是你的抽象類,寶馬,馬自達,吉普車是你的駕駛類。 你有字段:名稱,型號,.. 你有constroctor:汽車類汽車(),汽車(弦模型)

,那麼當編譯器做內存分配對象需要閱讀抽象構造要注意的名稱,型號。 這將調用默認的構造函數。但是您可以使用base(「z4」)強制在抽象類中調用重寫的構造函數。

1

正如斯科特張伯倫所說的派生類是什麼(加上一些更多的功能)。

當然,對象可以在構造函數中有行爲。

無論如何,如果你不需要繼承他們,你應該構造代碼,以正確的方式,

你應該離開基地構造空的,要看您的具體需求

相關問題