这篇文章主要介绍c#中密封关键字的作用是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
<强>密封关键字的作用:
强>在类声明中使用密封可防止其它类继承此类;在方法声明中使用密封修饰符可防止扩充类重写此方法。
封修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化。具体说来,由于密封类永远不会有任何派生类,所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用来处理。
密封类:
密封类在声明中使用密封修饰符,这样就可以防止该类被其它类继承。如果试图将一个密封类作为其它类的基类,c#将提示出错。理所当然,密封类不能同时又是抽象类,因为抽象总是希望被继承的。
在哪些场合下使用密封类呢?实际上,密封类中不可能有派生类。如果密封类实例中存在虚成员函数,该成员函数可以转化为非虚的,函数修饰符虚拟不再生效。
让我们看下面的例子:
AbstractClass抽象类 { 公共抽象void方法(); } 密封类SealedClass: AbstractClass { 公共覆盖空白方法() {//瓆 }
如果我们尝试写下面的代码
类OtherClass: SealedClass
{
}
c#会指出这个错误,告诉你SealedClass是一个密封类,不能试图从SealedClass中派生任何类。
密封方法:
c#还提出了密封方法(sealedmethod)的概念,以防止在方法所在类的派生类中对该方法的重载。对方法可以使用密封修饰符,这时我们称该方法是一个密封方法。
不是类的每个成员方法都可以作为密封方法密封方法,要作为密封方法必须对基类的虚方法进行重载,提供具体的实现方法,所以,在方法的声明中,密封修饰符总是和覆盖修饰符同时使用。请看下面的例子代码:
使用系统; A类 { 公共虚拟空白F () { Console.WriteLine (“A.F"); } 公共虚拟空间G () { Console.WriteLine (“A.G"); } } B类: { 密封覆盖公共空F () { Console.WriteLine (“B.F"); } 覆盖公共空间G () { Console.WriteLine (“B.G");} } 丙级:B { 覆盖公共空间G () { Console.WriteLine (“C.G"); } }
类B对基类一个中的两个虚方法均进行了重载,其中F方法使用了封修饰符,成为一个密封方法.G方法不是密封方法,所以在B的派生类C中,可以重载方法克,但不能重载方法F
以上是c#中密封关键字的作用是什么的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!