疑問: 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的初始值?先執行父類的構造函數還有一個重要原因就是,子類的構造函數可能會用到一些成員,而這些成員是在父類的構造函數中初始化的。
- 2 回答
- 0 關注
- 1146 瀏覽
添加回答
舉報
0/150
提交
取消