Access Modifiers In Java
Access modifiers in Java are used to specify access levels for classes, variable methods and constructor.
 default: The scope of default access modifier is limited to the package only. If we do not mention any access modifier, then it acts like a default access modifier.
Let’s see a practical example to understand this better.
package packageOneDefault; public class DefaultClassOne { // Here I didnt mention any modifier so it acts as a default modifier. protected int myMethod(int x){ return x; } }
package packageTwoDefault; import packageOneDefault.DefaultClassOne; public class DefaultClassTwo { public static void main(String args[]){ // Created an object of ClassOne DefaultClassOne obj = new DefaultClassOne(); // Trying to access the default method of ClassOne which is in packageOne // You can find an error at obj.myMethod obj.myMethod(10); } }
private: The scope of private access modifier is only within the classes.
Note: Class or Interface cannot be declared as private
package packageThreePrivate; public class PrivateClassOne { private int x = 100; int y = 200; private int myMethod(int a){ return a; } int myMethodOne(int a){ return a; } }
package packageThreePrivate; public class PrivateClassTwo { public static void main(String args[]){ PrivateClassOne obj = new PrivateClassOne(); // Here I am trying to access the private data member and private method of ClassOne // It throws compilation error System.out.println(obj.x); System.out.println(obj.myMethod(1000)); // Here I am trying to access default data member and default method of ClassOne // No error. We can comfortable access default modifier with in the package System.out.println(obj.y); System.out.println(obj.myMethodOne(2000)); } }
protected: The scope of protected access modifier is within a package and also outside the package through inheritance only.
Note: Class cannot be declared as protected
package packageFourProtected; public class ProtectedClassFour { protected int myMethod(int a){ return a; } }
package packageFiveProtected; import packageFourProtected.ProtectedClassFour; public class ProtectedClassFive extends ProtectedClassFour{ public static void main(String args[]){ ProtectedClassFive obj = new ProtectedClassFive(); System.out.println(obj.myMethod(100)); } }
public: The scope of public access modifier is everywhere. It has no restrictions. Data members, methods and classes that declared public can be accessed from anywhere.
package packageSixPublic; public class PublicClassSix { // Here I didnt mention any modifier so it acts as a default modifier. public int myMethod(int x){ return x; } }
package packageSevenPublic; import packageSixPublic.PublicClassSix; public class PublicClassSeven { public static void main(String args[]){ // Created an object of ClassOne PublicClassSix obj = new PublicClassSix(); // Trying to access the public method of PublicClassSix which is in packageSixPublic obj.myMethod(10); // We tried the same example with Default and we faced an error. Hope you remember } }
See this simple table to understand access modifiers easily
Must Read: Java Tutorial