|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我之所以想学。NET,是因为一直觉的BILLGATES好厉害,希望有一天能去微软,虽然现在还距离遥远,呵呵:)sealed关头字的感化:
在类声明中利用sealed可避免别的类承继此类;在办法声明中利用sealed润色符可避免扩大类重写此办法。
sealed润色符次要用于避免非成心的派生,可是它还能促使某些运转时优化。详细说来,因为密封类永久不会有任何派生类,以是对密封类的实例的假造函数成员的挪用能够转换为非假造挪用来处置。
密封类:
密封类在声明中利用sealed润色符,如许就能够避免该类被别的类承继。假如试图将一个密封类作为别的类的基类,C#将提醒堕落。天经地义,密封类不克不及同时又是笼统类,由于笼统老是但愿被承继的。
在哪些场所下利用密封类呢?实践上,密封类中不成能有派生类。假如密封类实例中存在虚成员函数,该成员函数能够转化为非虚的,函数润色符virtual不再失效。
让我们看上面的例子:
复制代码代码以下:
abstractclassAbstractClass
{
publicabstractvoidMethod();
}
sealedclassSealedClass:AbstractClass
{
publicoverridevoidMethod()
{//...}
}
假如我们实验写上面的代码
classOtherClass:SealedClass
{
}
C#会指出这个毛病,告知你SealedClass是一个密封类,不克不及试图从SealedClass中派生任何类。
密封办法:
C#还提出了密封办法(sealedmethod)的观点,以避免在办法地点类的派生类中对该办法的重载。对办法可使用sealed润色符,这时候我们称该办法是一个密封办法。
不是类的每一个成员办法都能够作为密封办法密封办法,要作为密封办法必需对基类的虚办法举行重载,供应详细的完成办法。以是,在办法的声明中,sealed润色符老是和override润色符同时利用。请看上面的例子代码:
复制代码代码以下:
usingSystem;
classA
{
publicvirtualvoidF()
{
Console.WriteLine("A.F");
}
publicvirtualvoidG()
{
Console.WriteLine("A.G");
}
}
classB:A
{
sealedoverridepublicvoidF()
{
Console.WriteLine("B.F");
}
overridepublicvoidG()
{
Console.WriteLine("B.G");}
}
classC:B
{
overridepublicvoidG()
{
Console.WriteLine("C.G");
}
}
类B对基类A中的两个虚办法均举行了重载,个中F办法利用了sealed润色符,成为一个密封办法。G办法不是密封办法,以是在B的派生类C中,能够重载办法G,但不克不及重载办法F你可以先看看这篇文章(软微学院生涯-三朝元老经验谈),打不开再跟我说。(我的意思是想让她自己先稍微了解一下到底现在各个方向学的工具以及以后要做的工具大概是什么,因为喜欢做什么样的事其实自己最清楚的) |
|