This is not a design decision, but a logical one. The simplest start is to look at the corresponding definitions of concepts:
A static class is one that cannot be created. This means that you cannot create objects of this type of class.
Non-static members are bound to a specific instance of the class. They contain data that is associated exclusively with one object of this type of class.
So, if a static class contains non-static members, you can never access this data or call this method, because you can never instantiate an object of this type of static class. Instead, you should have all the static members that can be called directly from a static instance of the class.
However, you can have non-static classes containing static elements. Thus, you can access the data or call methods exposed as static elements without creating an instance of the object of this class. However, you can also create an object of this type of class and access non-stationary (or instances) elements. For example, if you have a Circle class, you may have static members, such as the CalculateArea function and the PI field. These members apply to all circles, as a rule, only because they are circles. But you can also have non-static members associated with specific instances of this class, because they describe specific circle objects. These can be the Diameter and Circumference . You can also have non-static functions that calculate the area of a circle, given the data stored in non-static fields for that particular instance.
Cody gray
source share