c#中sealed关键字

前几天给大家总结了virtual(虚拟的)、abstract(抽象的)、override(重写)关键字,今天就抽空把sealed(密封的)给大家总结出来,因为这四个是一连串的,所以最后才给大家总结sealed(密封),让大家久等了。来,现在就一起来瞧瞧吧!

1、先来了解一下sealed的意思

在这里插入图片描述
从上图可知,sealed译为密封的。故名思义,就是由它修饰的类或方法将不能被继承或重写

2、作用

​ (1)在类中使用sealed修饰符可防止其他类继承此类

​ (2)在方法声明中使用sealed修饰符可防止扩充类重写此方法

3、sealed所使用的范围

​ sealed可用于修饰类、方法、属性。

切记:不能用于修饰字段和变量

(1)密封类

​ 1、被sealed修饰的类被称为密封类,所谓密封类,就是指此类不能作为基类让其他类继承

​ 2、当对一个类应用 sealed 修饰符时,此修饰符会阻止其他类从该类继承。类似于Java中final关键字。
在这里插入图片描述
例子:

 sealed class Animal//Animal类被sealed关键字修饰,此时说明任何类不能从Animal类继承
    {
    }
 class Cat:Animal//错误,被Seled修饰的类不能作为基类让其他类继承
    {
    }

(2)密封方法

​ 被sealed修饰的方法被称为密封方法,所谓密封方法,就是指此方法不能被重写

注意:

​ (1)sealed修饰方法时,不能单独使用,只有当继承基类时重写基类方法的时候使用,而且,必须与override(重写)关键字一起使用
在这里插入图片描述
​ (2)切记:只有在继承重写的时候才能使用sealed关键字,如果继承的基类没有你想要被重写的方法,此时使用sealed关键字修饰时错误的
在这里插入图片描述
​ (3)sealed必须重写方法才能使用。也就是说只有基类的方法使用了abstract(抽象的)、virtual(虚拟的)以及override(重写)关键字的时候,才能使用sealed关键字修饰方法
在这里插入图片描述

例1:
 //基类                 //这是正确的
 abstract class Animal
    {
        public abstract void Hh();//抽象方法,注意:抽象方法没有方法体
    }
  //派生类
  class Cat:Animal
    {
        sealed public override void Hh()//密封方法必须要有override(重写)标记
        {
        }
    }
例2:
  //基类
  class Animal
    {
        public virtual void Hh()//虚方法,注意:虚方法有方法体
        { 
        }
    }
  //派生类
  class Cat:Animal
    {
        sealed public override void Hh()//密封方法必须要有override(重写)标记
        {
        }
    }

4、注意:

​ (1)被sealed修饰的类不能使用private、protected……等修饰符,并且不能使用static以及abstract修饰符

​ (2)被sealed修饰的方法或属性证明是要重写,要与override同用,并且,要与基类的访问修饰符和方法签名一致。注意:当重写时,基类的被重写方法不能使用private、static以及abstract修饰符。

以上是我对sealed(密封)关键字的一点理解和总结,希望能够帮助到跟我一样的小白。如果本篇文章有不足之处还请各位道友能够指点迷津,在此先谢谢各位道友!

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐