[英]Define serialization/deserialization method for a sealed class that we do not have access
[英]Can we declare sealed method in a class
class X {
sealed protected virtual void F() {
Console.WriteLine("X.F");
}
sealed void F1();
protected virtual void F2() {
Console.WriteLine("X.F2");
}
}
在上面的代碼中有編譯時錯誤:
XF()'不能密封,因為它不是替代
X.F1()'無法密封,因為它不是替代
這是否意味着我們只能應用必須重寫某些方法的sealed
關鍵字whey?
好吧, 密封關鍵字防止方法被覆蓋 ,這就是為什么它沒有意義
virtual
而不是聲明virtual sealed
。 因此,唯一的選擇是override sealed
,這意味着覆蓋,但這是最后一次 :
public class A {
public virtual void SomeMethod() {;}
public virtual void SomeOtherMethod() {;}
}
public class B: A {
// Do not override this method any more
public override sealed void SomeMethod() {;}
public override void SomeOtherMethod() {;}
}
public class C: B {
// You can't override SomeMethod, since it declared as "sealed" in the base class
// public override void SomeMethod() {;}
// But you can override SomeOtherMethod() if you want
public override void SomeOtherMethod() {;}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.