簡體   English   中英

如果需要“虛擬”才能允許派生類覆蓋它,為什么我需要“密封”方法?

[英]why do I need “sealed” method if “virtual” is required in order to allow derived class override it?

還是我在這里缺少一些基本的東西?

因為密封方法避免了它在派生類中被覆蓋,而virtual方法允許它

sealed是用於防止子類覆蓋您覆蓋的virtual方法。

  1. virtual關鍵字將使您(或使用您的代碼的人)使用自己的邏輯覆蓋給定的方法。

  2. abstract關鍵字將強制您(或使用您的代碼的其他人)用您自己的邏輯覆蓋它。

  3. sealed關鍵字將使您(或使用您的代碼的人)可以防止對方法的任何進一步修改。

如果您不添加“密封”,則可以再次覆蓋替代方法。

當您想到這些關鍵字時,請同時考慮以下兩種情況:您可以自己編寫代碼,或者可以創建DLL和代碼庫供他人使用。 后一種情況通常需要使用密封,抽象和虛擬的方式。

希望這可以幫助!

方法sealedvirtual 您無需指定任何內容,而這又不會讓派生類覆蓋它們。

方法可以虛擬,但只能密封類。 密封類不能從中繼承。

來源: http : //msdn.microsoft.com/en-us/library/88c54tsw(v=vs.71).aspx

編輯:好的,我錯了,一個方法可以被密封,但是只有一個已經覆蓋了另一個方法,關鍵字隨后阻止了該方法的進一步覆蓋。

來源: http : //msdn.microsoft.com/en-us/library/aa645769(v=vs.71).aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM