[英]Is C# method sealed or virtual by default?
我知道virtual
關鍵字和sealed
關鍵字的定義,但是如果您不將它們與方法一起使用,則默認情況下可以覆蓋該方法嗎?
我來自vb.net背景。 在vb.net中(來自MSDN)如下所示:
如果未指定Overridable或NotOverridable修飾符,則默認設置取決於屬性或方法是否覆蓋基類屬性或方法。 如果屬性或方法覆蓋基類的屬性或方法,則默認設置為Overridable; 否則,它是不可覆蓋的。
我只想知道在C#中是否也是如此。
默認情況下,C#中的方法不是虛擬的。
不,它不能。 您需要將方法顯式標記為虛擬方法,以允許在派生類中重寫該方法。
但是,您可以做的是使用new關鍵字隱藏方法。 (MSDN文檔)
該密封關鍵字可用於類定義和方法。 它不允許從類繼承或方法的重寫。 默認情況下,如果您不使用此關鍵字,其他人將能夠從您的類繼承。 ( MSDN文檔 )
不。與Java不同,C#中的方法默認情況下不是virtual
的。 它們都不是sealed
,但是您不能覆蓋它們,因為它們是常規方法。
不可以,您不能覆蓋非虛擬方法。 new關鍵字僅隱藏基類的實現,不是一個好習慣。
在這里與Anders Hejlsberg討論這個問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.