回答
不,你不能重寫構造函數。這個概念在C#中沒有意義,因爲構造函數並不是多態調用的。你總是說明你想要構建的是哪個類,以及構造函數的參數。
構造函數根本就沒有繼承 - 但派生類中的所有構造函數都必須鏈接到同一個類中的另一個構造函數,或者鏈接到基類中的某個構造函數。如果你沒有明確地做到這一點,編譯器會隱式鏈接到基類的無參數構造函數(如果該構造函數不存在或不可訪問,則會發生錯誤)。
「這個概念沒有任何意義,真的 - 構造函數根本不是多態調用的。」 - 在德爾福,他們是。這是一個非常有用的功能,我可以通過使用反射並傳遞運行時檢查的'Type'實例或通過提供單獨的工廠類來找到C#中所需的解決方法,相比之下,這相當麻煩。 –
@ O.R.Mapper:恩,是的,我正在討論C#的情況。其他語言所做的與這個答案無關。 –
在這種情況下,我建議答案並不主張「這個概念毫無意義,真的」,因爲這聽起來很普遍。就像「這個概念會很有意義,但不可能在C#中使用這個概念,因爲構造函數不是在那裏以多態方式調用的。」可能會更清楚。 –
不,構造函數不是繼承的。你不能在派生類中重寫它們。
原因
一個基類的構造將永遠被調用,用於 每一個類,從物體下降,因爲每類必須 至少一個構造函數調用基()構造函數(明確 或暗示),並且每次調用this()構造函數都必須最終調用base()構造函數。
Upvoted相關和很好的解釋! – KillABug
不,你不能重寫構造函數。
如果您看一下構造函數的基本語法,它應該與您正在編寫它的類具有相同的名稱。假設你寫了一個與基類同名的方法(與基類構造函數相同),它只是在派生類中沒有指定返回類型的新方法,這在句法上不正確。
Upvoted爲一個簡單的解釋。 – KillABug
- 1. 是否有可能在PHP中鏈式重載構造函數?
- 2. 是否有可能在scala中重載構造函數?
- 3. 是否有可能在構造函數中調用函數? PHP
- 4. 是否有可能將構造函數放在另一個構造函數的構造函數中?
- 5. 是否有可能爲Arrays c#創建構造函數?
- 6. 是否有可能在XML中傳遞構造函數參數?
- 7. 是否可以重寫啓動完成構造函數?
- 8. C++;是否有可能在子構造函數的中間調用父構造函數?
- 9. 是否有可能在C函數中構建函數?
- 10. 是否有可能有一個構造函數的參數作爲類名C++?
- 11. 是否有可能在Scala中繼承輔助構造函數?
- 12. 是否有可能在構造函數中聲明變量[Java]
- 13. 是否有可能直接在C++中的另一個構造函數的參數中構造一個對象?
- 14. 在F#中。是否有可能重載抽象類型的構造函數?
- 15. 是否有可能重寫PowerShell 5類中的Getter/Setter函數?
- 16. 是否有可能重寫jQuery tablesorter中的排序函數?
- 17. 重寫構造函數
- 18. 是否有可能爲deftype定義構造函數?
- 19. 是否有可能超載在PHP構造函數
- 20. 是否有可能創建一個沒有在C#中使用重載的主體的構造函數?
- 21. C++:是否有可能爲具有參數化構造函數的類編寫Mock類
- 22. 是否有可能擁有默認的拷貝構造函數和模板化的轉換構造函數?
- 23. F#中的重寫構造函數#
- 24. JS對象的構造函數是否可以用SpiderMonkey在C++中編寫?
- 25. 是否有可能在swift中重寫find(sequence,element)函數?
- 26. 是否有可能調用默認構造函數而不是零參數構造函數?
- 27. 構造函數是否影響性能?
- 28. C#可能有一個抽象類中的構造函數?
- 29. C#構造函數重載
- 30. C#構造函數重載
親愛的專家編碼來自邏輯我只是問resion – naval
其他人已經回答好。如果你不知道「chainig」構造函數的語法,就像這樣:'internal MyClass(string name):base(null,0,name){...}'。在這個例子中,構造函數使用三個參數調用基礎構造函數。 –
重新打開選民:請在投票重新開放之前將問題修改爲通常的標準。 –