1. 程式人生 > >十、密封類和密封方法

十、密封類和密封方法

後繼 code pre lin 除了 virtual 抽象方法 限制 led

密封類

密封類可以用來限制擴展性,如果密封了某個類,則其他類不能從該類繼承。

如果密封了某個成員,則派生類不能重寫該成員的實現。

一個密封類是沒有也不能繼承的類,因此sealed關鍵字和abstract關鍵字不能同時使用。

密封類除了不能被繼承外,其他與非密封類一樣。

C#中聲明密封類時需要使用sealed關鍵字。

訪問修飾符 sealed class 類名:基類或接口
{
       //類成員      
}

public sealed class myClass //聲明密封類
{
       public int i=0;
       public void methed()
       {
           Console.WriteLine(
"密封類"); } }

密封方法是為了重寫基類的虛方法並提供具體的實現,同時防止其後繼類(派生類)再次重寫該虛方法。

因此在密封方法中sealed關鍵字總是和override關鍵字同時使用。

public/*基類的可訪問性一定要高於子類的,平級也可以*/class Class1  
    {  
        public virtual void Write()  
        {  
            Console.WriteLine("未密封方法");  
        }  
    }  

//如果一個類不希望將來在使用的過程中被繼承,被派生,這時候可以采用關鍵字sealed  
    
//虛方法virtual 抽象方法abstract的存在就是為了繼承,為了派生,因此不能被放在sealed類中 public class Class2:Class1 { public sealed override void Write() { Console.WriteLine("密封方法"); } } public class Class3:Class2 { /* public override sealed void Write() { 在Class2中該方法被密封,無法重寫。 }
*/ }

十、密封類和密封方法