zoukankan      html  css  js  c++  java
  • 简述c#之sealed 修饰符

    sealed 修饰符表示密封

    用于类时,表示该类不能再被继承,不能和 abstract 同时使用,因为这两个修饰符在含义上互相排斥

    用于方法和属性时,表示该方法或属性不能再被重写,必须和 override 关键字一起使用,因为使用 sealed 修饰符的方法或属性肯定是基类中相应的虚成员

    通常用于实现第三方类库时不想被客户端继承,或用于没有必要再继承的类以防止滥用继承造成层次结构体系混乱

    恰当的利用 sealed 修饰符也可以提高一定的运行效率,因为不用考虑继承类会重写该成员

    示例:

    using System;
    using System.Collections.Generic;
    using System.Text; 

    namespace Example06
    {    
       class Program    
       {        
        class A        
        {            
           public virtual void F()            
           {                
               Console.WriteLine("A.F");            
           }   

    在基类(父类)中用virtual修饰符声明一个虚方法,然后在在派生类(子类)中用override修饰符覆盖基类虚方法。表明是对基类的虚方法重载
    这种优势在于它可以在程序运行时再决定调用哪一个方法,这就是所谓的“运行时多态”
    或者称动态绑定。


           public virtual void G()            
           {                
               Console.WriteLine("A.G");            
           }        
        }        
        class B : A        
        {            
            public sealed override void F()
            {
               Console.WriteLine("B.F"); 
            }            
            public override void G() 
            {
                Console.WriteLine("B.G");
            } 
        }        
        class C : B
        {
             public override void G()
             {
                 Console.WriteLine("C.G");
             }
        }
            static void Main(string[] args)
            {
                new A().F();
                new A().G();
                new B().F();
                new B().G();
                new C().F();
                new C().G();
                Console.ReadLine();
            }
        }
    }

    结果: 类 B 在继承类 A 时可以重写两个虚函数,如图所示:

    由于类 B 中对 F 方法进行了密封, 类 C 在继承类 B 时只能重写一个函数,如图所示:

    控制台输出结果,类 C 的方法 F 只能是输出 类B 中对该方法的实现:

    A.F A.G B.F B.G B.F C.G

  • 相关阅读:
    Linux九阴真经之催心掌残卷5(正则表达式)
    Linux九阴真经之催心掌残卷4(grep文本处理 )
    Linux九阴真经之催心掌残卷3
    Linux九阴真经之催心掌残卷2
    0.1.kubeadm快速部署kubernetes
    0.2.kubeadm搭建kubernetes高可用集群(CentOS)
    Nginx——模块(1)
    Nginx——主配置段
    Nginx——安装
    Nginx——I/O模型
  • 原文地址:https://www.cnblogs.com/TJessica/p/7059391.html
Copyright © 2011-2022 走看看