[英]Override Sealed is valid but why not Virtual Sealed in C#?
以下代碼段有效
public class BaseClass
{
public virtual void Display()
{
Console.WriteLine("Virtual method");
}
}
public class DerivedClass : BaseClass
{
public override sealed void Display()
{
Console.WriteLine("Sealed method");
}
}
但為什么不呢
public class BaseClass
{
public virtual sealed void Display()
{
Console.WriteLine("Virtual method");
}
}
編輯
其實我正在閱讀什么是密封類和密封方法? 本文。 所以我按照作者的指示。 突然,我試着用基類來演奏Sealed的概念。 這就是我提出這個問題的原因。
override sealed
是有效的,因為它說“我正在覆蓋基類方法,但派生類不能覆蓋我。” 那講得通。 其中一部分是談論與基類的關系; 另一個是談論派生類的關系。
virtual sealed
將說“你可以覆蓋我( virtual
),但你不能覆蓋我( sealed
)。” 這是沒有意義的。 這兩個修飾語是矛盾的,適用於相同的關系。
密封:
您還可以在覆蓋基類中的虛方法或屬性的方法或屬性上使用sealed修飾符。 這使您可以允許類派生自類,並防止它們覆蓋特定的虛擬方法或屬性。
覆蓋:
override修飾符是擴展或修改繼承方法,屬性,索引器或事件的抽象或虛擬實現所必需的。
Sealed
意味着它是給定方法/類的“層次結束”。 使virtual
方法只是說“這是默認行為,如果你想要不同的行為,請覆蓋我 ”並且sealed
意味着“這不能被覆蓋”是一個悖論。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.