It's true that it's not possible to create an instance of an abstract or static class but that's about where the similarities end.
- Can inherit from
abstract cannot inherit from static
- Can have instance methods on
abstract cannot have instance on static
- An
abstract class can implement an interface a static class cannot
Fundamentally they are trying to serve two different purposes
- An
abstract class forms a blue print / pattern which is then implemented in derived classes in different and (hopefully) transparent ways
- A
static class is simply a container for a collection of possibly related static methods