Access Modifiers
Access Modifiers
The access modifiers in java specifies accessibility (scope) of a data member, method, constructor or class.
There are many non-access modifiers such as static, abstract, synchronized, native, volatile, transient etc.
Here, we will learn access modifiers.
1) PRIVATE ACCESS MODIFIER
The private access modifier is accessible only within class.
Simple example of private access modifier
In this example, we have created two classes A and Simple. A class contains private data member and
private method. We are accessing these private members from outside the class, so there is compile time
error.
1) PRIVATE ACCESS MODIFIER
class A{
private int data=40;
private void msg(){System.out.println("Hello java");}
}
//------------------------------------------
public class Simple{
public static void main(String args[]){
A obj=new A();
System.out.println(obj.data);//Compile Time Error
obj.msg();//Compile Time Error
}
}
ROLE OF PRIVATE CONSTRUCTOR
If you make any class constructor private, you cannot create the instance of that class from outside the
class.
For example:
class A{
private A(){}//private constructor
void msg(){System.out.println("Hello java");}
}
public class Simple{
public static void main(String args[]){
A obj=new A(); //Compile Time Error
}
}
The protected access modifier can be applied on the data member, method and
constructor. It can't be applied on the class.
outside package by
Access Modifier within class within package outside package
subclass only
Private Y N N N
Default Y Y N N
Protected Y Y Y N
Public Y Y Y Y
JAVA ACCESS MODIFIERS WITH METHOD OVERRIDING
If you are overriding any method, overridden method (i.e. declared in subclass) must
not be more restrictive.
class A{
protected void msg(){System.out.println("Hello java");}
}
public class Simple extends A{
void msg(){ System.out.println("Hello java");} // Compile time Error
public static void main(String args[ ]){
Simple obj=new Simple();
obj.msg();
}
Note:
} The default modifier is more restrictive than
protected. That is why there is compile time error.