C#之 sealed(密封類和密封方法)

weixin_34208283發表於2017-04-06
1,密封類

密封類可以用來限制擴充套件性,當在程式中密封了某個類時,其他類不能從該類繼承,可防止對壘進行自定義。

2,定義密封類——sealed
sealed class MySealedClass
{}
3,密封方法

virtual 關鍵字用於修飾方法、屬性、索引器或事件宣告,並使它們可以在派生類中被重寫。
預設情況下,方法是非虛擬的。 不能重寫非虛方法。
virtual 修飾符不能與 static、abstract, private 或 override 修飾符一起使用。
除了宣告和呼叫語法不同外,虛擬屬性的行為與抽象方法一樣。
在靜態屬性上使用 virtual 修飾符是錯誤的。
通過包括使用 override 修飾符的屬性宣告,可在派生類中重寫虛擬繼承屬性。
c#密封類的一個例子。

namespace 密封方法
{
    class Program
    {
        static void Main(string[] args)
        {
            Class2 myMethod = new Class2();
            myMethod.MyMethod();
            Console.ReadLine();
        }
    }
    class Class1
    {
        public Class1()
        {
            Console.WriteLine("建立Class1的型別變數");
        }
        public virtual void MyMethod()
        {
            Console.WriteLine("這是一個方法");
        }
    }
    class Class2 : Class1
    {
        public Class2()
        {
            Console.WriteLine("建立Class2的型別變數");
        }
        public sealed override void MyMethod()
        {
            Console.WriteLine("這是一個密封方法!");
        }
    }
}
總結:

C#允許把類或方法宣告為sealed.對於類來說,這表示不能繼承該類。
對於方法來說,這表示不能重寫該方法。
**注意 **:sealed 只能寫在重寫的方法上,寫上以後,表示該方法不能被該類的子類重寫了。

class baseClass{
    public virtual void function(){};
}

class DerivedClass : baseClass{
    public sealed override void function(){}; //  可以將重寫的方法宣告為密封方法,表示該方法不能被重寫。
}

相關文章