RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-17:00
你可能遇到了下面的问题
关闭右侧工具栏

新闻中心

这里有您想知道的互联网营销解决方案
C#密封类和密封方法-创新互联
  1. C#中使用关键字sealed,将类和方法声明为密封类或者密封方法;

    目前创新互联公司已为千余家的企业提供了网站建设、域名、网站空间、网站托管、服务器托管、企业网站设计、上海网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
sealed class A  //密封类
  {
    
   }
 
   public sealed override void N()  //密封方法
   {
       Console.WriteLine();
    }

2.对于密封类来说,表示该类不能被继承;对于密封方法来说,表示该方法不能被重写;

 例①:

//对于密封类来说,表示该类不能被继承
    sealed class A
    {
    }
    class B : A //错误提示:B无法从密封类型A派生
    {
    }

 例②:

class A
    {
        public virtual void M()
        {
            Console.WriteLine("M()方法被调用!");
        }
        
        public virtual void N()
        {
            Console.WriteLine("N()方法被调用!");
        }
    }
    
    class B : A
    {
        public override void M()
        {
            Console.WriteLine("M()方法被重写!");
        }
        
        public sealed override void N()
        {
            Console.WriteLine("N()方法被重写并被密封!");
        }
    }
    
    class C : B
    {
       public override void M() //B重写了A中的N方法而且没有密封,C就可以重写B中的N方法了
       {
            Console.WriteLine("M()方法!");
       }
       
        public override void N() //报错,B重写了A中的N方法并密封,C就无法重写B中的N方法了
        {
        }
    }

3.密封类不能作为基类被继承,但它可以继承别的类或借口;

      interface D //声明一个接口
    {
    }
    
    sealed class A : B  //密封类可以继承其他非密封类
    {
    }
    
    sealed class C : D //密封类可以继承接口
    {
    }
    
    class B : A  // 报错,B无法从密封类型A派生,密封类不能被继承
    {
    }

4.密封类不能被声明为抽象的,因为抽象类总希望被继承,而密封类不能被继承。(sealed和abstract不  能修饰一个类名)

      sealed abstract class A  //抽象类不能同时又是密封的或者静态的
    {
        
    }

5.在密封类中不能声明受保护成员(声明了也不报错)、虚成员、抽象成员,因为受保护成员只能从派生  类进行访问,而虚成员只能在派生类中重写,非抽象类中不能有抽象方法。

      sealed class A  
    {
        protected void B() //不报错,密封类中声明了新的保护成员
        {
        }
        
        public virtual void C() //报错,错误提示: C是密封类A中的虚拟成员
        {
        }
        
        public abstract void D(); //报错,错误提示: D是抽象的,但是它包含在非抽象类A中
    }

6.并不是每个方法都可以声明为密封方法,密封方法只能用于对基类的虚方法进行实现并提供具体的实  现,所以,声明密封方法时,sealed总是和override同时使用。

  如2.中的例②。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文标题:C#密封类和密封方法-创新互联
网址分享:http://lswzjz.com/article/ddsgec.html