我今天在一次採訪中被問到了這個問題,但我無法弄清楚。我被問及從開始到高級問題的所有事情,但這個問題突出了。我描述的是繼承和多態,然後出現了這個問題。我顯然從來沒有嘗試覆蓋[C#/ C++]類中的每個方法,但我並不知道爲了覆蓋特定的方法(例如.ToString)而需要某些內容。我誤解了這個問題還是有需要的東西?如果是的話,是什麼強制這個要求?重寫.NET中的函數有什麼作用
回答
- 基類不能是
sealed
- 在基類的方法必須被標記爲
virtual
或abstract
要覆蓋必須被聲明爲virtual
或abstract
所述的方法(和是在非密封型中)。否則,你唯一的選擇是隱藏它。
在C++和C#中,您必須聲明基類函數爲virtual
。否則,具有相同名稱和簽名的派生類中的函數將隱藏基類版本。
好的,我開始理解這一點。所以[在C#中]如果我聲明一個基類爲「虛擬」,你說派生類將具有相同的名稱和簽名......但它會具有相同的「功能」..即,派生類函數方法是完全一樣的嗎? – Justin 2011-08-02 19:08:13
您需要將基類*函數*標記爲虛擬類,而不是類。它將具有相同的功能......除非在派生類中重寫該函數。 – 2011-08-02 20:06:45
您要覆蓋的方法必須標記爲virtual或abstract
。
如果你瞭解多態性和繼承,那麼我覺得你可能會推翻這個問題。我的意思是C#超越僅僅是這樣的:
public override double parentFunction()
{
//child implementation
}
...和父功能必須delcared虛擬。
沒有逐字聽到問題,很難說面試官正在尋找什麼。我與面試官的經驗是,他們只是想確保你瞭解一般性,但誰知道。我很想知道你是否能得到這份工作:)祝你好運!
嘿,我真的很感謝你的回覆,並希望我能早點回復你。我非常強調,他首先從最難的問題開始,所以我不舒服,甚至搞砸了最簡單的問題。但是這項工作很長時間,我已經受僱了,所以沒什麼大不了的。再次感謝! – Justin 2011-08-02 19:36:20
- 1. 爲什麼Django中的Model.save()函數的重寫不能工作?
- 2. Vala中的「_」函數有什麼作用?
- 3. xts包中的重新分類函數有什麼作用?
- 4. 重寫javax.servlet.Servlet.getServletInfo()有什麼用?
- 5. 重寫一個私有函數,它與protected有什麼不同?
- 6. 重寫此函數的最有效方法是什麼?
- 7. 爲什麼沒有Dispose方法在.Net Core中重寫?
- 8. 爲什麼構造函數會忽略重寫的虛函數?
- 9. 這個C函數有什麼作用?
- 10. 這個Perl函數有什麼作用?
- 11. Backbone.js擴展函數有什麼作用?
- 12. QueryString函數......它有什麼作用?
- 13. Randomize函數有什麼作用域?
- 14. Node.js「on」函數 - 它有什麼作用?
- 15. 以下Javascript函數有什麼作用?
- 16. lowByte()和highByte()函數有什麼作用?
- 17. 它有什麼作用? ; jQuery.ui || (函數($){
- 18. 這個函數有什麼作用?
- 19. invisible()函數有什麼作用?
- 20. 什麼可能是使用jQuery.extend重寫函數的原因?
- 21. python中的surface.blit()函數是什麼?它有什麼作用?怎麼運行的?
- 22. 爲什麼重寫不起作用?
- 23. 爲什麼重寫ApplicationPageBackgroundThemeBrush不起作用?
- 24. .net中的readonly屬性和函數有什麼區別?
- 25. JavaScript中的eval函數有什麼用?
- 26. 這個.NET屬性有什麼作用?
- 27. 寫作異步C#.NET回調函數
- 28. .Net框架上的clr.dll是什麼?它有什麼作用?
- 29. lambda函數有什麼用?
- 30. 重寫類中的函數
謝謝。這正是我認爲面試官所期待的。我很抱歉沒有及早回覆你。 – Justin 2011-08-02 19:05:55