A static member is a member you can have access to without instantiating the class into an object. For example, you can read and write static properties and call static methods without ever creating the class. Static members are also called class members (class methods, class properties, etc.) since they belong to the class and not to a specific object. A static class is a class that contains only static members. In the UML, these classes are described as utility classes.
Languages Focus: Static Member
Languages that support static members usually at least support static member fields (the data). Some languages also support static methods, properties, etc. in which case the class member is held in memory at one location and shared with all objects. Finally, some languages support static classes which usually means the compiler will make sure a static class contains only static members.
Delphi Class Members
Object Pascal supports static methods, but not static member fields. For static member fields, use traditional Pascal-like global variables.
Since Object Pascal is a hybrid language, you can use global functions and data so the need for class methods is diminished but still useful. For example, since Object Pascal does not have automatic reference counting, you could use a class method to keep track of the number of object instances.
Delphi 1-7: All classes in a unit are friendly (see eachother's private members), some developers like to put each class in it's own unit and reserve putting multiple classes in the same unit until they wish to implement friendly classes.
Delphi 2005+: New strict keyword allows you to indicate friendly.
Delphi Prism: The Strict keyword was introduced from the beginning (Delphi.Net preview that shipped with D7).
Syntax Example: type
TMyUtils = class(TObject)
public
class function MyStaticMethod: Integer;
end;
In implimentation:
class function TMyUtils.MyStaticMethod: Integer;