>类库下载 >net类库 >밀봉형 씰형

밀봉형 씰형

高洛峰
高洛峰원래의
2016-11-01 13:32:241616검색

system 사용;
System.Collections.Generic 사용;
System.Linq 사용;
System.Text 사용;
#region 개요
//클래스 선언에 봉인을 사용하면 다음을 수행할 수 있습니다. 다른 클래스가 이 클래스를 상속하지 못하도록 방지합니다. 메서드 선언에 봉인된 수정자를 사용하면 확장 클래스가 이 메서드를 재정의하는 것을 방지할 수 있습니다.
//sealed 수정자는 의도하지 않은 파생을 방지하는 데 주로 사용되지만 특정 런타임 최적화를 촉진할 수도 있습니다. 특히 봉인된 클래스에는 파생 클래스가 없으므로 봉인된 클래스 인스턴스의 가상 함수 멤버에 대한 호출은 처리를 위해 비가상 호출로 변환될 수 있습니다.

//密封类://密封类在声明中使用sealed 修饰符,这样就可以防止该类被其它类继承。如果试图将一个密封类作为其它类的基类,C#将提示出错。理所当然,密封类不能同时又是抽象类,因为抽象总是希望被继承的。//在哪些场合下使用密封类呢?实际上,密封类中不可能有派生类。如果密封类实例中存在虚成员函数,该成员函数可以转化为非虚的,函数修饰符virtual 不再生效。#endregionnamespace Sealed密封类
{    class NOSealed
    {        public static void OO()
        {
            Console.WriteLine("没有使用密封");
        }
    }

    sealed class YESSealed
    {        public static void OO()
        {
            Console.WriteLine("使用了密封");
        }
    }    class MyClass : NOSealed //YESSealed 那就错了
    {        public new void OO()
        {
            Console.WriteLine("没有继承密封");
        }
    }    //密封类不可以被继承,可以被调用
    sealed class mysealed   //声明为密封类  
    {        public int x;        public int y;
    }    class Program
    {        static void Main(string[] args)
        {
            NOSealed.OO();
            MyClass M = new MyClass();
            M.OO();            //调用密封类
            YESSealed.OO();
            mysealed m = new mysealed();
            m.x = 100;
            m.y = 200;
            Console.WriteLine("x={0}, y = {1}", m.x, m.y);
            Console.ReadLine();

            Console.ReadKey();
        }
    }
}


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.