为什么我需要“密封”方法如果需要“虚拟”才能允许派生类覆盖它?

时间:2012-12-09 02:50:22

标签: c# .net oop

或者我错过了一些基本的东西?? ..

因为密封方法避免在派生类中重写它而虚拟允许它

4 个答案:

答案 0 :(得分:6)

sealed用于防止子类覆盖您覆盖的virtual方法。

答案 1 :(得分:4)

  1. virtual关键字将允许您(或使用您的代码的人)使用自己的逻辑覆盖给定方法。

  2. abstract关键字会强迫您(或其他人使用您的代码)使用您自己的逻辑覆盖它。

  3. sealed关键字将允许您(或使用您的代码的人)阻止对方法进行任何进一步修改。

  4. 如果您不添加“密封”,则可以再次覆盖覆盖方法。

    当您考虑这些关键字时,请考虑两种情况:您可以自己编写代码,也可以创建DLL和代码库供其他人使用。后一种情况通常会保证使用密封,抽象和虚拟。

    希望这有帮助!

答案 2 :(得分:1)

方法sealedvirtual。您不需要指定任何内容,而允许派生类覆盖它们。

答案 3 :(得分:-2)

方法可以虚拟,但只能密封类。 密封的类不能继承。

来源: http://msdn.microsoft.com/en-us/library/88c54tsw(v=vs.71).aspx

编辑: 好吧,我错了,一个方法可以被密封,但只有一个已经覆盖了另一个,关键字然后阻止进一步覆盖该方法。

来源: http://msdn.microsoft.com/en-us/library/aa645769(v=vs.71).aspx