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

  • 相关阅读:
    C# DataGridView搜索
    C# DataGridView插入DB
    C# 扩展类
    C# Clone控件
    C# 动态事件示例
    C# 遍历控件 示例
    c的详细学习(11)文件
    c的详细学习(10)结构体与共用体的学习(二)
    c的详细学习(9)结构体与共用体的学习(一)
    c的详细学习(8)指针学习(二)
  • 原文地址:https://www.cnblogs.com/streetpasser/p/2793927.html
Copyright © 2011-2022 走看看