美文网首页技术文
C#之 sealed(密封类和密封方法)

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

作者: 困卡 | 来源:发表于2017-04-06 22:45 被阅读0次
    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(密封类和密封方法)

        本文链接:https://www.haomeiwen.com/subject/vwkcattx.html