I'm working on C# code where a static method of an abstract base class is being overridden by the class that inherits the base class. Why is this being done? I thought that only a virtual method of an abstract base class should be overridden. What purpose does it serve to make the base method static, or is it the case that what I'm encountering is a suboptimal or incorrect practice? The code is allowed by the compiler.
My understanding is that a static method allows the method to be called without the encompassing type being instantiated as an object. I've only used static methods previously in static classes, and I've viewed abstract classes as simply being inheritable classes that aren't supposed to be instantiated. In this case, I wouldn't expect a static method of the abstract class to be overrideable but made virtual, as a virtual method could still contain a default implementation, and I would think that a virtual method better hides the implementation details.