或者我错过了一些基本的东西?? ..
因为密封方法避免在派生类中重写它而虚拟允许它
答案 0 :(得分:6)
sealed
用于防止子类覆盖您覆盖的virtual
方法。
答案 1 :(得分:4)
virtual
关键字将允许您(或使用您的代码的人)使用自己的逻辑覆盖给定方法。
abstract
关键字会强迫您(或其他人使用您的代码)使用您自己的逻辑覆盖它。
sealed
关键字将允许您(或使用您的代码的人)阻止对方法进行任何进一步修改。
如果您不添加“密封”,则可以再次覆盖覆盖方法。
当您考虑这些关键字时,请考虑两种情况:您可以自己编写代码,也可以创建DLL和代码库供其他人使用。后一种情况通常会保证使用密封,抽象和虚拟。
希望这有帮助!
答案 2 :(得分:1)
方法不为sealed
或virtual
。您不需要指定任何内容,而不允许派生类覆盖它们。
答案 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