zoukankan      html  css  js  c++  java
  • 密封方法 密封类(sealed)


    1. 密封类 即不希望类被继承,无派生类。
       密封方法 即不允许被重载的方法。

    2. 密封方法 所在的类 不一定是密封类 (和抽象方法不同) ,  该类的派生类中必须原封不动的继承这个密封方法. 

        密封方法本身也是个重载方法, 即 必须 sealed 和 override 都要有.

    3. 密封方法不能被重载(override), 但可以被覆盖(new).

     
    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace ConsoleApp
    {
        class sealedSample
        {
            public static void Main()
            {
                A a = new A1();
                a.Output();
    
                a = new A2();
                a.Output();
    
                a = new A1_1();
                a.Output();
    
                a = new A1_2();
                a.Output();
    
                Console.Read();
            }
        }
        
        //抽象类
        public abstract class A
        {
            //抽象方法
            public abstract void Output();
        }
    
        //派生 实现
        public class A1 : A
        {
            //重写基类A的Output(), 并且设为 密封方法!
            public sealed override void Output()
            {
                Console.WriteLine("A1");
            }
            
            //// X 密封方法必须有override!
            //public sealed void Output()
            //{
            //    Console.WriteLine("A1");
            //}
        }
    
        //定义密封类 A2
        public sealed class A2 : A
        {
            public override void Output()
            {
                Console.WriteLine("A2");
            }
        }
    
        public class A1_1 : A1
        {
            //继承其父类(A1)的 Output()
            
        }
    
        public class A1_2 : A1
        {
    
            // X 不能重写 sealed方法, 只能 覆盖 new方法
            //public  override void Output()
            //{
            //    Console.WriteLine("A1_2");
            //}
    
            public new void Output()
            {
                Console.WriteLine("A1_2");
            }
        }
    }
    

     结果:

    A1
    A2
    A1
    A1

  • 相关阅读:
    Django + uWSGI + Nginx 实现生产环境部署
    面试题(一)
    Python基础之路
    Tornado之实例和扩展
    Scrapy源码研究前戏
    算法之基本概念
    RedHat6.2系统安装ipvsadm+keepalived
    oracle11G 同时支持IPV4和IPV6配置
    redhat6.5 安装oracle11G
    python解析字体反爬
  • 原文地址:https://www.cnblogs.com/streetpasser/p/2793927.html
Copyright © 2011-2022 走看看