亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

new創建子類對象的時候,父類對象會被自動創建么?

new創建子類對象的時候,父類對象會被自動創建么?

吃雞游戲 2018-12-05 11:07:27
疑問: 1、new 子類對象的時候,會生成父類對象么? 2、調用子類的構造函數的時候,為什么會先調用父類的構造函數呢?
查看完整描述

2 回答

?
紅糖糍粑

TA貢獻1815條經驗 獲得超6個贊

1. 當然不會。調用父類構造函數和生成一個父類的對象是兩個概念。比如你有兩個類A和B,B繼承自A。那么你new B()的時候,只創建了一個B類型的對象(當然它可以轉成A類型),但是整個過程中只有1個對象被創建了。

2. 因為子類的邏輯要后執行。舉例:

class A
{
      public int Number { get; set; }
      public A()
      {
             Number = 100;
      }
}

class B : A
{
       public B()
       {
            Number = 200;
       }
}

如果問你new B()之后Number的值,你肯定會說200吧?因為100太奇怪了。就是這個道理,子類中的邏輯要確保最后執行,否則你豈不是永遠修改不了Number的初始值?先執行父類的構造函數還有一個重要原因就是,子類的構造函數可能會用到一些成員,而這些成員是在父類的構造函數中初始化的。


查看完整回答
反對 回復 2018-12-09
?
達令說

TA貢獻1821條經驗 獲得超6個贊

首先調用父類構造函數,再調用子類構造函數

查看完整回答
反對 回復 2018-12-09
  • 2 回答
  • 0 關注
  • 1146 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號