程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#基礎概念二十五問(6)

C#基礎概念二十五問(6)

編輯:關於C語言

6.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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved