Static members can directly access other static members of a class, and a static method cannot directly access non-stationary members of the same class.
A static method or property can only call other static methods or properties of the same class directly (i.e., using the method name itself) and can only directly manipulate static variables in the same class.
To access non-stationary class members, a static method or property must use a reference to an object of this class. Recall that static methods belong to the class as a whole, while non-static methods are associated with a specific object (instance) of a class and can manipulate instance variables of this object (as well as static members of the class).
Many class objects, each with their own instances of instance variables, can exist simultaneously. Suppose a static method was to call a non-static method directly. How does the method know which instance variables of the objects are processed? What happens if class objects did not exist at the time the non-static method was called? A source
source share