<p>I have a helper class that is just a bunch of static methods and would like to subclass the helper class.  Some behavior is unique depending on the subclass so I would like to call a virtual method from the base class, but since all the methods are static I can't create a plain virtual method (need object reference in order to access virtual method). </p>

<p>Is there any way around this?  I guess I could use a singleton.. HelperClass.Instance.HelperMethod() isn't so much worse than HelperClass.HelperMethod().  Brownie points for anyone that can point out some languages that support virtual static methods.</p>

<p><strong>Edit:</strong> OK yeah I'm crazy. Google search results had me thinking I wasn't for a bit there.</p>

Virtual static methods don't make sense.  If I call
```
HelperClass.HelperMethod();
```
, why would I expect some random subclass' method to be called?  The solution really breaks down when you have 2 subclasses of
```
HelperClass
```
- which one would you use?
If you want to have overrideable static-type methods you should probably go with:
A singleton, if you want the same subclass to be used globally.
A tradition class hierarchy, with a factory or dependency injection, if you want different behavior in different parts of your application.
Choose whichever solution makes more sense in your situation.