sealed 修飾符是幹什麼的?

sealed 修飾符表示密封

用於類時,表示該類不能再被繼承,不能和 abstract 同時使用,因爲這兩個修飾符在含義上互相排斥

用於方法和屬性時,表示該方法或屬性不能再被繼承,必須和 override 關鍵字一起使用,因爲使用 sealed 修飾符的方法或屬性肯定是基類中相應的虛成員

通常用於實現第三方類庫時不想被客戶端繼承,或用於沒有必要再繼承的類以防止濫用繼承造成層次結構體系混亂

恰當的利用 sealed 修飾符也可以提高一定的運行效率,因爲不用考慮繼承類會重寫該成員

示例:

using System;
using System.Collections.Generic;
using System.Text;
 
namespace Example06
{
 class Program
 {
  class A
  {
   public virtual void F()
   {
    Console.WriteLine("A.F");
   }
   public virtual void G()
   {
    Console.WriteLine("A.G");
   }
  }
  class B : A
  {
   public sealed override void F()
   {
    Console.WriteLine("B.F");
   }
   public override void G()
   {
    Console.WriteLine("B.G");
   }
  }
  class C : B
  {
   public override void G()
   {
    Console.WriteLine("C.G");
   }
  }
  static void Main(string[] args)
  {
   new A().F();
   new A().G();
   new B().F();
   new B().G();
   new C().F();
   new C().G();
 
   Console.ReadLine();
  }
 }
}
結果:
類 B 在繼承類 A 時可以重寫兩個虛函數,如圖所示:

 

由於類 B 中對 F 方法進行了密封, 類 C 在繼承類 B 時只能重寫一個函數,如圖所示:

 

控制檯輸出結果,類 C 的方法 F 只能是輸出 類B 中對該方法的實現:

A.F
A.G
B.F
B.G
B.F
C.G

發佈了36 篇原創文章 · 獲贊 1 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章