Access Modifiers
java में दो प्रकार के modifiers हैं – access modifier और non-access modifiers।
java classes ,variables, methods और constructors के लिए access levels set करने के लिए कई access modifiers provide करता है। java में चार प्रकार के access modifiers हैं –
Default :- default modifier का access level केवल package के अंदर ही होता है। इसे package के बाहर से access नहीं किया जा सकता है। यदि आप किसी भी access level को indicated नहीं करते हैं तो यह default होगा।
private :– private modifier का access level केवल class के अंदर ही होता है। इसे class के बाहर से access नहीं किया जा सकता ।
Protected: – protected modifier का access level package के अंदर और child class के द्वारा package के बाहर होता है। यदि आप child class नहीं बनाते हैं तो इसे package के बाहर से access नहीं किया जा सकता है।
Public :- public modifier का उपयोग हर जगह कर सकते है। इसे class के अंदर , class के बाहर , package के अंदर या package के बाहर तक access किया जा सकता है।
non-access modifiers :- जैसे कि static, abstract, synchronized, native, volatile, transient आदि।
यहां हम access modifiers सीखने जा रहे हैं।
modifiers को एक table द्वारा समझते हैं |
|
Access Modifiers |
Default access modifier :- Default access modifier का मतलब है कि हम data members, class या methods जो किसी access modifier के इस्तेमाल से declared नहीं किए जाते हैं यानी default access modifier केवल उसी package के अंदर ही access होते हैं। default modifier यह private की तुलना में ज्यादा accessed provide करता है। लेकिन यह protected और public की तुलना में ज्यादा restrictive है।
Example of default access modifier
इस उदाहरण में हमने दो packages pack और mypack बनाए हैं। हम A class को उसके package के बाहर से access कर रहे हैं क्योंकि A class public नहीं है |
//save by A.java
package pack;
class A{
void msg()
{
System.out.println(“java”);
}
}
class A और उसके method msg () का scope default है इसलिए इसे package के बाहर से access नहीं किया जा सकता है।
//save by B.java
package mypack;
import pack.*;
class B{
public static void main(String args[]){
A obj = new A();//Compile Time Error
obj.msg();//Compile Time Error
}
}
Private:- private access modifier private keyword का उपयोग करके specified किया जाता है।
private declared किए गए तरीके या data members केवल उस class के अंदर ही access कर सकते हैं जिसमें वे declared किए जाते हैं।
same package का कोई भी class इन members तक access नहीं कर सकेगा।
Top level Classes या interface को private declared नहीं किया जा सकता क्योंकि
private का अर्थ है केवल visible class के अंदर दिखाई देने वाला।
इसलिए classes के लिए application के reference में modifiers वे केवल nested classes पर लागू होते हैं न कि top level classes पर |
private modifier का उपयोग data haiding के लिए भी किया जाता है।
Examples of private access modifier
//Java program to illustrate error while
//using class from different package with
//private modifier
package p1;
class A
{
private void display()
{
System.out.println(“GeeksforGeeks”);
}
}
class B
{
public static void main(String args[])
{
A obj = new A();
//trying to access private method of another class
obj.display();
}
}
protected: protected access modifier को protected keyword का उपयोग करके specifie किया जाता है।
protected declare किए गए तरीके या data members एक ही package या अलग-अलग package में sub classes के अंदर accessible हैं।
इस उदाहरण में हम दो packages p1 और P2 बनाएंगे। p1 में class A को public किया गया है इसे p2 में access करने के लिए। class A में method display protected है और class B को class A से inherited किया है और class B की एक object बनाकर इस protected method को फिर access किया गया है।
Examples of protected access modifier
//Java program to illustrate
//protected modifier
package p1;
//Class A
public class A
{
protected void display()
{
System.out.println(“GeeksforGeeks”);
}
}
//Java program to illustrate
//protected modifier
package p2;
import p1.*; //importing all classes in package p1
//Class B is subclass of A
class B extends A
{
public static void main(String args[])
{
B obj = new B();
obj.display();
}
}
public: public access modifier में public keyword का उपयोग करके specified किया जाता है।
public access modifier में अन्य सभी access modifiers का widest scope है।
classes methds या data members जो public declare किए जाते हैं वो program में हर जगह से accessible हैं। एक public data members के scope पर कोई restriction नहीं है।
Examples of public access modifier
//save by A.java
package pack;
public class A{
public void msg(){System.out.println(“Hello”);}
}
//save by B.java
package mypack;
import pack.*;
class B{
public static void main(String args[]){
A obj = new A();
obj.msg();
}
}
Access Control और Inheritance के rules |
- superclass में public declare किये गये methods subclass में public होनी चाहिए।
- private declared किए गए inherited methods में नहीं होने चाइये हैं इसलिए उनके लिए कोई rules नहीं है।
- superclass में protected declared किये गए methods या तो protected होने चाहिए या subclasses में public होने चाहिए वे private नहीं हो सकते।