Access modifiers in Java
Access Modifiers in Java
Now it is very easy to understand here what is the access level / scope of a class, method, constructor, variable. Access modifiers in Java helps to identify the access level or scope of a class, constructor, variable, method or data member. There are four types of access modifiers available in java:
- Default – No keyword required
- Private
- Protected
- Public
For better understanding, member level access is formulated as a table:
Access Modifiers |
Same Class | Same Package | Sub Class | Other Packages |
| public | Y | Y | Y | Y |
| protected | Y | Y | Y | N |
| default | Y | Y | N | N |
| private | Y | N | N | N |
Important Points:
Default: Ohh it's quite diffent, When no access modifier is specified for a class ,for a method or any data member – It is said to be having the default access modifier in java.
//Java program to illustrate default modifier
package pkg1;
//Class mindclues is having Default access modifier
class Mindclues{
void display(){
System.out.println("Hello mindclues!");
}
}
//Java program to illustrate error while using class from different package with default modifier
//This class is having default access modifier
class MindcluesNew{
public static void main(String args[]){
//accessing class from package p1
Mindclues obj = new Mindclues();
obj.display();
}
}
|
Output: Compile time error
Above 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 second 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.
Private: The private access modifier is specified using the keyword private.
In this example, we will create two classes A and B within 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 program to illustrate error while using class from different package with private modifier
package mindclues;
class A{
private void display(){
System.out.println("mindclues");
}
}
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();
- The methods or data members declared as private are accessible only within the class in which they are declared.
- Any other class of same package will not be able to access these members.
- Classes or interface can not be declared as private.
protected: The protected access modifier is specified using the keyword protected.
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 program to illustrate protected modifier
package mindclues;
//Class A
public class A{
protected void display(){
System.out.println("mindclues");
}
}
|
//Java program to illustrate protected modifier
package mindclues;
import mind.*; //importing all classes in package mind Class B is subclass of A
class B extends A{
public static void main(String args[]){
B obj = new B();
obj.display();
}
}
|
Output: mindclues
- The methods or data members declared as protected are accessible within same package or sub classes in different package.
public: The public access modifier is specified using the keyword public.
//Java program to illustrate public modifier
package mindclues;
public class A{
public void display(){
System.out.println("mindclues");
}
}
package mind;
import mindclues.*;
class B{
public static void main(String args[]){
A obj = new A;
obj.display();
}
}
|
Output:
mindclues
- The public access modifier has the widest scope among all other access modifiers.
- Classes, methods or data members which are declared as public are accessible from every where in the program. There is no restriction on the scope of a public data members.
- 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.




post a comment