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