zoukankan      html  css  js  c++  java
  • C#密封类

    C#密封类

    一、密封类

    1. 密封类的定义

    如果我们不希望自己编写的类被继承;如果有的类已经没有再被继承的必要,这时,我们可以使用sealed修饰符在类中进行声明,以达到该类不能派生其它类的目的,该类就被称为密封类。

    2. 密封类与抽象类

    密封类不能同时又是抽象类,因为密封类不能用作基类、也不能被继承,而抽象类总是希望被继承的。

    3. 什么情况下使用密封类

    需要阻止其它程序员无意中继承该类的时候;在程序运行时需要起到优化效果的时候,可以使用密封类。

    4. 示例
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace Test
    {
        class Program
        {
            sealed class A  // 密封类。不能从该类再派生出其它类
            {
                public int x;
                public int y;
            }
            static void Main(string[] args)
            {
                // C#密封类-www.baike369.com
                A a = new A();
                a.x = 10;
                a.y = 20;
                Console.WriteLine("x = {0}; y = {1}", a.x, a.y);
                Console.ReadLine();
            }
        }
    }

    运行结果:

    x = 10; y = 20二、密封方法

    1. 密封方法

    对类中的方法可以使用sealed修饰符,我们称该方法为密封方法。

    不是类的每个成员方法都可以作为密封方法,密封方法必须对基类的虚方法进行重载,提供具体的实现方法。所以,在方法的声明中,sealed修饰符总是和override修饰符同时使用,sealed修饰符位于override修饰符前面。

    2. 示例
     
    class A
    {
        public virtual void F()
        {
            Console.WriteLine("A.F");
        }
        public virtual void G()
        {
            Console.WriteLine("A.G");
        }
    }

    class B : A
    {
        sealed override public void F()
        {
            Console.WriteLine("B.F");
        }
        override public void G()
        {
            Console.WriteLine("B.G");
        }
    }

    class C : B
    {
        override public void G()
        {
            Console.WriteLine("C.G");
        }
    }

    类B对基类A中的两个虚方法都进行了重载,其中F方法使用了sealed修饰符,成为一个密封方法。G方法不是密封方法,所以在B的派生类C中,可以重载方法G,但是不能重载方法F。

     
  • 相关阅读:
    Minimum configuration for openldap to proxy multiple AD into a single search base
    排列组合算法(PHP)
    Make Notepad++ auto close HTML/XML tags after the slash(the Dreamweaver way)
    PHP, LDAPS and Apache
    【day1】tensorflow版本问题及初步使用
    tflearn save模型异常
    布隆过滤器(Bloom Filter)
    初识Spark(Spark系列)
    Hadoop实践
    install postgis(2.0) on ubuntu(12.04)
  • 原文地址:https://www.cnblogs.com/melao2006/p/4239234.html
Copyright © 2011-2022 走看看