Member Access Rights
Restricting member access to certain parts of code.
Overview
Public members
Protected members
Private members
Constructors and destructors
Overview
All members of a `Type` or `Class` - including member data, procedures, constants, etc. - belong in one of three different classifications, each with its own rules dictating where in code they may be accessed, or referred to. These rules are called access rights. There are public, protected and private members, and they are declared in a `Type` or `Class` definition following a `Public`, `Protected` or `Private` label, respectively.
By default, that is, without an access classification label, members of a `Type` are public, and members of a `Class` are private.
Public members
Public members can be referred to from anywhere; they are accessible from, for example, member procedures or module-level code or procedures.
Protected members
Protected members can only be accessed from member procedures of the `Type` or `Class` they are declared in, or member procedures of a derived `Type` or `Class`. They are not accessible to outside code.
Private members
Private members can only be accessed from member procedures of the `Type` or `Class` they are declared in. They are not accessible to outside code or member procedures from a derived `Type` or `Class`.
Constructors and destructors
Constructors and destructors follow the same rules as any other member. When public, objects can be instantiated and destroyed from anywhere in code. When protected, objects can be instantiated and destroyed only from member procedures of their `Type` or `Class` or a derived `Type` or `Class`. Private constructors and destructors restrict object instantiation solely to member procedures of their `Type` or `Class`.