4/24/25, 3:08 PM Access Modifiers | Apex Developer Guide | Salesforce Developers
Developers
Access Modifiers
Apex Developer Guide / Writing Apex / Classes, Objects, and Interfaces / Classes / Access Modifiers
Access Modifiers
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 aren’t as useful in
smaller portions of Apex. For example, declaring a method as global in an anonymous block
doesn’t enable you to call it from outside of that code.
For more information on class access modifiers, see Apex Class Definition.
Note
Methods defined in an interface have the same access modifier as the interface ( public
or global ). For more information, see Interfaces.
By default, a method or variable is visible only to the Apex code within the defining class. 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 access modifier is the default, and means that the method or variable is accessible only
within the Apex class in which it’s defined. If you don’t 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,
and to the classes that extend the defining Apex class. You can only use this access modifier for
instance methods and member variables. This setting is strictly more permissive than the default
(private) setting, just like Java.
public
This means that the method or variable is accessible by all Apex within a specific package. For
accessibility by all second-generation (2GP) managed packages that share a namespace, use
public with the @NamespaceAccessible annotation. Using the public access modifier in no-
namespace packages implicitly renders the Apex code as @NamespaceAccessible.
Note
In Apex, the public access modifier isn’t the same as it is in Java. This was done to
discourage joining applications, to keep the code for each application separate. In
Apex, if you want to make something public like it is in Java, you must use the global
access modifier.
For more information on namespace-based visibility, see Namespace-Based Visibility for Apex
Classes in Second-Generation Packages.
https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_access_modifiers.htm 1/3
4/24/25, 3:08 PM Access Modifiers | Apex Developer Guide | Salesforce Developers
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 must be used for any method
that must be referenced outside of the application, either in SOAP 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 .
Note
We recommend using the global access modifier rarely, if at all. Cross-application
dependencies are difficult to maintain.
To use the private , protected , public , or global access modifiers, use the following syntax:
[(none)|private|protected|public|global] declaration
For example:
// private variable s1
private string s1 = '1';
// public method getsz()
public string getsz() {
...
}
DID THIS ARTICLE SOLVE YOUR ISSUE?
Share your feedback
Let us know so we can improve!
DEVELOPER CENTERS POPULAR RESOUR CES COMMUNITY
Heroku Documentation Trailblazer Community
MuleSoft Component Library Events and Calendar
Tableau APIs Partner Community
Commerce Cloud Trailhead Blog
Lightning Design System Sample Apps Salesforce Admins
Einstein Podcasts Salesforce Architects
Quip AppExchange
https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_access_modifiers.htm 2/3
4/24/25, 3:08 PM Access Modifiers | Apex Developer Guide | Salesforce Developers
© Copyright 2025 Salesforce, Inc. All rights reserved. Various trademarks held by their respective owners. Salesforce, Inc.
Salesforce Tower, 415 Mission Street, 3rd Floor, San Francisco, CA 94105, United States
Privacy Information Terms of Use Legal Use of Cookies Trust Cookie Preferences
Your Privacy Choices Responsible Disclosure Contact
https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_access_modifiers.htm 3/3