Access Modifiers; Classes, Data members, Methods और Constrctutor के accessbility के लिए इस्तेमाल किया जाता है |
Access Modifiers चार प्रकार के होते है |
- default Access Modifier
- private Access Modifier
- public Access Modifier
- protected Access Modifier
1. default Access Modifier
अगर कोई Modifier नहीं दिया जाता तो, bydefault default दिया जाता है |
default Modifier सिर्फ package के अन्दर ही accessible होता है |
Program में देखे तो दो packages बनाये गए है | class A को किसी package से access किया जाता है | लेकिन default Modifier होने के कारण ये access नहीं होता |
//A.java package pack1; class A{ void disp(){ System.out.println("class A"); } }
//B.java package pack2; import pack1.*; class B{ public static void main(String args[]){ A a = new A(); a.disp(); } }
C:\Program Files\Java\jdk1.8.0_111\bin>javac -d . A.java C:\Program Files\Java\jdk1.8.0_111\bin>javac -d . B.java B.java:6: error: A is not public in pack1; cannot be accessed from outside package A a = new A(); ^ B.java:6: error: A is not public in pack1; cannot be accessed from outside package A a = new A(); ^ 2 errors
2. private Access Modifier
private Access Modifier ये सिर्फ class के अन्दर accessible होते है |
Program में देखे तो parent class में a और b नाम के दो instance variables लिए है | लेकिन a variable; private है | ये variable सिर्फ अपने class के अन्दर ही accessible होते है | Program में b variable दुसरे Child class से access हो रहा है, लेकिन a variable access नहीं हो रहा |
Source Code :Output :class Parent{ private int a = 5; int b = 10; } class Child extends Parent{ void disp(){ System.out.println("Value of a : " + a); System.out.println("Value of b : " + b); } public static void main(String args[]){ Child c = new Child(); c.disp(); } }
Child.java:9: error: a has private access in Parent System.out.println("Value of a : " + a);
3. public Access Modifier
public Access Modifier से कहा पर भी access किया जा सकता है |
//A.java package pack1; public class A{ public void disp(){ System.out.println("class A"); } }
//B.java package pack2; import pack1.*; class B{ public static void main(String args[]){ A a = new A(); a.disp(); } }
C:\Program Files\Java\jdk1.8.0_111\bin>javac -d . A.java C:\Program Files\Java\jdk1.8.0_111\bin>javac -d . B.java C:\Program Files\Java\jdk1.8.0_111\bin>java pack2.B class A
4. protected Access Modifier
ये सिर्फ अपने package के अन्दर और अपने sub-class पर accessible होते है |
Source Code :Output :class Parent{ int a = 5; int b = 10; protected void disp(){ System.out.println("Value of a : " + a); System.out.println("Value of b : " + b); } } class Child extends Parent{ public static void main(String args[]){ Child c = new Child(); c.disp(); } }
Value of a : 5 Value of b : 10
Accessing protected method Outside Package
//A.java package pack1; public class A{ protected void disp(){ System.out.println("class A"); } }
//B.java package pack2; import pack1.*; class B extends A{ public static void main(String args[]){ B b = new B(); b.disp(); } }
C:\Program Files\Java\jdk1.8.0_111\bin>javac -d . A.java C:\Program Files\Java\jdk1.8.0_111\bin>javac -d . B.java C:\Program Files\Java\jdk1.8.0_111\bin>java pack2.B class A