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

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(){}; //  可以将重写的方法声明为密封方法,表示该方法不能被重写。
}

你可能感兴趣的:(C#之 sealed(密封类和密封方法))