An interesting question at an interview.
Some interesting answers here
The big difference between a singleton and a bunch of static methods is that singletons can implement interfaces (or derive from useful base classes, although that’s less common, in my experience), so you can pass around the singleton as if it were “just another” implementation.
A static class allows only static methods.
A singleton can be initialized lazily or asynchronously while a static class is generally initialized when it is first loaded, leading to potential class loader issues. However the most important advantage, though, is that singletons can be handled polymorphically without forcing their users to assume that there is only one instance.
Investigation still ongoing. 🙂
An answer I received today is that Singleton is thread safe(or can be made), whyle static is not.
Static is created once at the start of the application.
Another is that you can inherit, transform Sigleton class.
Still looking for more answers.