Apex allows you to use the private, protected, public, and global access modifiers when defining
methods and variables.
While triggers and anonymous blocks can also use these access modifiers,
they are not as useful in smaller portions of Apex. For example, declaring a method as global in an anonymous block does not enable you to call
it from outside of that code.
By default, a method or variable is visible only to the Apex code within the defining class. This is different from Java,
where methods and variables are public by default. Apex is more restrictive, and requires you to explicitly specify a method
or variable as public in order for it to be available to other classes
in the same application namespace (see Namespace Prefix). You can change the level of visibility by using the
following access modifiers:
private
This is the default, and means that the
method or variable is accessible only within the Apex class in which it is defined. If you do not specify an access modifier,
the method or variable is private.
protected
This means that the method or variable is visible to any inner
classes in the defining Apex class. You can only use this access modifier for instance methods
and member variables. Note that it is strictly more permissive than
the default (private) setting, just like Java.
public
This means the method or variable can be
used by any Apex in this application or namespace.
global
This means the method or variable can be
used by any Apex code that has access to the class, not just the Apex code in the same application. This access modifier should be used
for any method that needs to be referenced outside of the application,
either in the Web services API or by other Apex code. If you declare a method or variable as global, you must also declare the
class that contains it as global.
To use the private, protected, public, or global access modifiers, use the
following syntax: