Last Updated : 26 Jul, 2025
In Java, access modifiers are essential tools that define how the members of a class, like variables, methods, and even the class itself, can be accessed from other parts of our program. They are an important part of building secure and modular code when designing large applications. In this article, we will explore each modifier with examples to demonstrate its impact on Java development.
Types of Access ModifiersThere are 4 types of access modifiers available in Java:
1. Define a class: Create a class to represent the object you want to manage.
2. Define instance variables: Inside the class, define variables for the data you want to manage.
3. Set an access modifier:
4. Use getter and setter methods: To access or modify variables, use getter (accessor) and setter (mutator) methods, even for public variables, to maintain encapsulation.
1. Default Access ModifierWhen no access modifier is specified for a class, method, or data member, it is said to have the default access modifier by default. This means only classes within the same package can access it.
Example 1: Demonstrating Default Access Modifier Within the Same Package
In this example, we will create two packages and the classes in the packages will be having the default access modifiers and we will try to access a class from one package from a class of the second package.
Geeks.java
Java
// default access modifier
package p1;
// Class Geek is having
// Default access modifier
class Geek
{
void display()
{
System.out.println("Hello World!");
}
}
GeeksNew.java:
Java
// error while using class from different
// package with default modifier
package p2;
import p1.*; // importing package p1
// This class is having
// default access modifier
class GeekNew {
public static void main(String args[]) {
// Accessing class Geek from package p1
Geek o = new Geek();
o.display();
}
}
Explanation: In this example, the program will show the compile-time error when we try to access a default modifier class from a different package.
2. Private Access ModifierThe private access modifier is specified using the keyword private. The methods or data members declared as private are accessible only within the class in which they are declared.
These modifiers in terms of application to classes, apply only to nested classes and not on top-level classes.
Example: In this example, we will create two classes A and B within the same package p1. We will declare a method in class A as private and try to access this method from class B and see the result.
Java
// Error while using class from different package with
// private access modifier
package p1;
// Class A
class A {
private void display() {
System.out.println("GeeksforGeeks");
}
}
// Class B
class B {
public static void main(String args[]) {
A obj = new A();
// Trying to access private method
// of another class
obj.display();
}
}
Explanation: The above code will show a compile-time error when trying to access a private method from class B, even within the same package.
3. Protected Access ModifierThe protected access modifier is specified using the keyword protected. The methods or data members declared as protected are accessible within the same package or subclasses in different packages.
Example 1: In this example, we will create two packages p1 and p2. Class A in p1 is made public, to access it in p2. The method display in class A is protected and class B is inherited from class A and this protected method is then accessed by creating an object of class B.
Java
// protected access modifier
package p1;
// Class A
public class A {
protected void display() {
System.out.println("GeeksforGeeks");
}
}
So, it demonstrates that a protected method is accessible within the same package.
Example 2: In this example, we will create two packages, p1 and p2. Class A in p1 has a protected method display. Class B in p2 extends A and accesses the protected method through inheritance by creating an object of class B.
Java
// protected modifier
package p2;
// importing all classes
// in package p1
import p1.*;
// Class B is subclass of A
class B extends A {
public static void main(String args[]) {
B obj = new B();
obj.display();
}
}
Explanation: The above example demonstrates that a protected method is accessible in a subclass from a different package using inheritance.
4. Public Access ModifierThe public access modifier is specified using the keyword public.
Example 1: Here, the code shows that a public method is accessible within the same package.
Java
// public modifier
package p1;
public class A {
public void display() {
System.out.println("GeeksforGeeks");
}
}
Example 2: Here, the example shows that a public method is accessible across packages.
Java
// public access modifier
package p2;
import p1.*;
class B {
public static void main(String args[]) {
A obj = new A();
obj.display();
}
}
Important Points:
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4