进行调用的一种方法是查看方法或属性的名称。List 上的 GetLlength ()方法完全符合名称的含义,并且它不支持 解释的大部分内容。更改其实现可能不太透明,因此将其标记为 virtual可能是不必要的。标记为虚拟的 Add方法是更有用的,因为有人可以创建一个特殊的列表,只接受一些对象通过添加方法等。另一个示例是自定义控件。您可能希望使用主绘图方法 virtual,这样其他人就可以使用大部分的行为,只是改变外观,但是您可能不会覆盖 X 和 Y 属性。
最后,你通常不必马上做出决定。在一个内部项目,你可以轻松地改变代码无论如何,我不会担心这些事情。如果需要重写某个方法,总是可以在发生这种情况时使其成为虚方法。
相反,如果项目是一个由其他人使用并且更新缓慢的 API 或库,那么考虑哪些类和方法可能有用肯定是值得的。在这种情况下,我认为开放比严格封闭更好。