• C#中sealed关键字


    C#中sealed关键字

    1. sealed关键字
        当对一个类应用 sealed 修饰符时,此修饰符会阻止其他类从该类继承。类似于Java中final关键字。     在下面的示例中,类 B 从类 A 继承,但是任何类都不能从类 B 继承。 2. sealed 修饰方法或属性
        能够允许类从基类继承,并防止它们重写特定的虚方法或虚属性。
        1)sealed是对虚方法或虚属性,也就是同override一起使用,如果不是虚方法或虚属性会报出错误:cannot be sealed because it is not an override
    1.publicclass D  
    2.{  
    3.    /* ConsoleApplication1.MSFun.Sealed.D.M()'  
    4.     * cannot be sealed because it is not an override  
    5.     */  
    6.    public sealed void M() { Console.WriteLine("D.M()"); }  
    7.}
    public class D
    {
        /* ConsoleApplication1.MSFun.Sealed.D.M()'  
         * cannot be sealed because it is not an override  
         */
        public sealed void M() { Console.WriteLine("D.M()"); }
    } 
    
        2)防止子类重写特定的方法或属性
    1.publicclass A  
    2.{  
    3.    protectedvirtualvoid M() { Console.WriteLine("A.M()"); }  
    4.    protectedvirtualvoid M1() { Console.WriteLine("A.M1()"); }  
    5.}  
    6.  
    7.publicclass B : A  
    8.{  
    9.    protected sealed override void M() { Console.WriteLine("B.M()"); }  
    10.    protected override void M1() { Console.WriteLine("B.M1()"); }  
    11.}  
    12.  
    13.public sealed class C : B  
    14.{  
    15.    /* ConsoleApplication1.MSFun.Sealed.C.M()': 
    16.     * cannot override inherited member 'ConsoleApplication1.MSFun.Sealed.B.M()' 
    17.     * because it is sealed */  
    18.    //protected override void M() { Console.WriteLine("C.M()"); }  
    19.  
    20.    protected override void M1() { Console.WriteLine("C.M1()"); }  
    21.}  
    public class A
    {
        protected virtual void M() { Console.WriteLine("A.M()"); }
        protected virtual void M1() { Console.WriteLine("A.M1()"); }
    }
    
    public class B : A
    {
        protected sealed override void M() { Console.WriteLine("B.M()"); }
        protected override void M1() { Console.WriteLine("B.M1()"); }
    }
    
    public sealed class C : B
    {
        /* ConsoleApplication1.MSFun.Sealed.C.M()':
         * cannot override inherited member 'ConsoleApplication1.MSFun.Sealed.B.M()'
         * because it is sealed */
        //protected override void M() { Console.WriteLine("C.M()"); }
    
        protected override void M1() { Console.WriteLine("C.M1()"); }
    }
  • 相关阅读:
    20145216 史婧瑶《信息安全系统设计基础》第一周学习总结
    20145216史婧瑶《信息安全系统设计基础》第0周学习总结
    20145216《java程序设计》课程总结
    20145216史婧瑶《Java程序设计》第10周学习总结
    20145216史婧瑶《Java程序设计》第五次实验报告
    20145216史婧瑶《Java程序设计》第四次实验报告
    20145216史婧瑶《Java程序设计》第9周学习总结
    20145216史婧瑶《Java程序设计》第三次实验报告
    20145216史婧瑶《Java程序设计》第8周学习总结
    20145220韩旭飞第五周博客
  • 原文地址:https://www.cnblogs.com/powerzhang/p/3291749.html
Copyright © 2020-2023  润新知