Access Modifiers in Java - GeeksforGeeks

25 May, 2021
As the name suggests access modifiers in Java helps to restrict the scope of a class, constructor, variable, method, or data member. There are four types of access modifiers available in java: 
Default – No keyword requiredPrivateProtectedPublic
Default – No keyword required
Private
Protected
Public
Default: When no access modifier is specified for a class, method, or data member – It is said to be having the default access modifier by default. The data members, class or methods which are not declared using any access modifiers i.e. having default access modifier are accessible only within the same package.
The data members, class or methods which are not declared using any access modifiers i.e. having default access modifier are accessible only 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.
Java
// Java program to illustrate default modifier package p1;   // Class Geeks is having Default access modifier class Geek {     void display()     {         System.out.println("Hello World!");     } } 
Java
// Java program to illustrate error while // using class from different package with // default modifier package p2; import p1.*;   // This class is having default access modifier class GeekNew {     public static void main(String args[])     {         // Accessing class Geek from package p1         Geeks obj = new Geek();           obj.display();     } } 
Output:
Compile time error
Private: The 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.Any other class of the same package will not be able to access these members.Top-level classes or interfaces can not be declared as private becauseprivate means “only visible within the enclosing class”.protected means “only visible within the enclosing class and any subclasses”
The methods or data members declared as private are accessible only within the class in which they are declared.
Any other class of the same package will not be able to access these members.
Top-level classes or interfaces can not be declared as private becauseprivate means “only visible within the enclosing class”.protected means “only visible within the enclosing class and any subclasses”
private means “only visible within the enclosing class”.protected means “only visible within the enclosing class and any subclasses”
private means “only visible within the enclosing class”.
protected means “only visible within the enclosing class and any subclasses”
Hence these modifiers in terms of application to classes, apply only to nested classes and not on top-level classes
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
// Java program to illustrate error while // using class from different package with // private modifier package p1;   class A { private void display()     {         System.out.println("GeeksforGeeks");     } }   class B { public static void main(String args[])     {         A obj = new A();         // Trying to access private method        // of another class         obj.display();     } } 
Output:
error: display() has private access in A
        obj.display();
protected: The 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.
The methods or data members declared as protected are accessible within the same package or subclasses in different packages.
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
// Java program to illustrate // protected modifier package p1;   // Class A public class A { protected void display()     {         System.out.println("GeeksforGeeks");     } } 
Java
// Java program to illustrate // protected modifier package p2; import p1.*; // importing all classes in package p1   // Class B is subclass of A class B extends A { public static void main(String args[]) {     B obj = new B();     obj.display(); }       } 
Output:
GeeksforGeeks
public: The public access modifier is specified using the keyword public. The public access modifier has the widest scope among all other access modifiers.Classes, methods, or data members that are declared as public are accessible from everywhere in the program. There is no restriction on the scope of public data members.
The public access modifier has the widest scope among all other access modifiers.
Classes, methods, or data members that are declared as public are accessible from everywhere in the program. There is no restriction on the scope of public data members.
Java
// Java program to illustrate // public modifier package p1; public class A { public void display()     {         System.out.println("GeeksforGeeks");     } }
Java
package p2;import p1.*;class B {    public static void main(String args[])    {        A obj = new A;        obj.display();    }}
Output:
GeeksforGeeks
Important Points:
If other programmers use your class, try to use the most restrictive access level that makes sense for a particular member. Use private unless you have a good reason not to.
Avoid public fields except for constants.
YouTubeGeeksforGeeks500K subscribersAccess Modifiers in Java | GeeksforGeeksWatch laterShareCopy link9/9InfoShoppingTap to unmuteIf playback doesn't begin shortly, try restarting your device.You're signed outVideos you watch may be added to the TV's watch history and influence TV recommendations. To avoid this, cancel and sign in to YouTube on your computer.CancelConfirmMore videosMore videosSwitch cameraShareInclude playlistAn error occurred while retrieving sharing information. Please try again later.Watch on0:000:000:00 / 5:59•Live•<div class="player-unavailable"><h1 class="message">An error occurred.</h1><div class="submessage"><a href="https://www.youtube.com/watch?v=Ruy-yzj-JG8" target="_blank">Try watching this video on www.youtube.com</a>, or enable JavaScript if it is disabled in your browser.</div></div>
ankitmahla
donald bradman
kanavarora1515
access modifiers
java-basics
Java
School Programming
Java
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Split() String method in Java with examples
Reverse a string in Java
Arrays.sort() in Java with examples
How to iterate any Map in Java
Initialize an ArrayList in Java
Python Dictionary
Arrays in C/C++
Reverse a string in Java
Inheritance in C++
C++ Classes and Objects