If you have programmed in Java or a similar strongly-typed object-oriented language, you may be accustomed to thinking about four kinds of class members:
These are the per-instance properties or variables that hold the state of individual objects.
These are methods that are shared by all instances of the class that are invoked through individual instances.
These are properties or variables associated with the class rather than the instances of the class.
These are methods that are associated with the class rather than with instances.
The properties of this object are inherited by all instances ...