हेल्लो दोस्तों! आज हम इस पोस्ट में Access Modifiers in Java in Hindi (जावा में एक्सेस मॉडिफायर क्या है?) के बारें में पूरे विस्तार में पढेंगे और इसके examples को भी देखेंगे, इसे मैंने आसान भाषा में लिखा है यह आपको आसानी से समझ में आ जायेगा, तो चलिए शुरू करते हैं:-
Access Modifiers in Java in Hindi
java में, access modifiers कीवर्ड होते हैं जो कि class, constructor, variable, method या data member की accessibility को set करते हैं.
दूसरे शब्दों में कहें तो, “access modifiers जो है वह class, constructor, methods या variable के scope के बारें में बताता है.”
हम एक्सेस मॉडिफायर का प्रयोग करके इनके access level को बदल सकते है. java में 4 प्रकार के access modifiers होते हैं, जो कि निम्नलिखित हैं:-
- Default
- Private
- Protected
- Public
Default
जब हम किसी class, constructor, methods आदि के लिए किसी भी access modifier का प्रयोग नही करते हैं तो उसे default एक्सेस मॉडिफायर समझा जाता है.
Default modifier का प्रयोग केवल इसी package के अंदर हो सकता है. इसका मतलब यह है कि यदि हमारे पास एक package में default modifier के साथ एक class है तो जो दूसरी classes इस package के अंदर है सिर्फ वो ही इस class को access कर सकती हैं. package के बाहर कोई दूसरी class इस class को access नहीं कर सकती.
यह modifier, private की तुलना में ज्यादा accessibility प्रदान करता है परन्तु यह protected और public से ज्यादा restricted है.
Example:-
अब हम इसको एक उदाहरण के द्वारा समझते हैं:-
package myWebsite;
class Study {
void message () {
System.out.println ("This is a study related website");
}
}
ऊपर दिए गये उदाहरण में Study class के पास default access modifier है. और इस Study class को वे सभी classes एक्सेस कर सकती है जों myWebsite पैकेज के अंदर होंगी. अगर हम इस class को इस package के बाहर access करना चाहेंगे तो हमें compiler error प्राप्त होगा.
Private
इस मॉडिफायर को private कीवर्ड का प्रयोग करके specify किया जाता है.
- private के रूप में declare किये गये methods या data members केवल उसी class के अंदर access किये जा सकते हैं जिसमें वे declare होते हैं.
- समान package की कोई दूसरी class इन members को access नहीं कर सकती.
- top level class या interface को हम private के रूप में declare नहीं कर सकते. परन्तु हम nested classes को private के रूप में declare कर सकते हैं.
example:- अब इसको उदाहरण के द्वारा देखते हैं:-
नीचे दिए उदाहरण में पैकेज myPackage के अंदर दो क्लास- Message और Example हैं. और हमने Message क्लास के अंदर एक private मेथड declare की है. और हम इस method को Example से access करते हैं तो हमें compile time error आता है.
package myPackage;
class Message {
private void show () {
System.out.println ("This is a message");
}
}
public class Example {
public static void main (String args []) {
Message obj = new Message ();
//trying to access private method of another class
obj.show (); // Compile Time Error
}
}
Protected
इस मॉडिफायर को protected कीवर्ड का प्रयोग करके specify किया जाता है.
- protected के रूप में declare किये गये methods या data members को उसी package के अंदर access कर सकते है या दूसरे package के sub-class के अंदर access कर सकते हैं.
example:-
नीचे दिए उदाहरण में हमने दो packages P1 और P2 को create किया है. इसमें class A, P1 में है जो कि public है. इसलिए इसे package के बाहर भी access किया जा सकता है. लेकिन इसमें show method भी है जो कि protected है. इसलिए इसको class B ने inherit किया है.
package p1;
public class A{
protected void show(){
System.out.println("this is ehindistudy.com");
}
}
package p2;
import p1.*;
class B extends A{
public static void main(String args[]){
B obj = new B();
obj.msg();
}
}
इसका आउटपुट:- this is ehindistudy.com
Public
Public access modifier को public कीवर्ड के द्वारा specify किया जाता है.
- इस modifier को कही भी access किया जा सकता है.
- इसमें किसी भी प्रकार का restriction (प्रतिबंध) नहीं होता है.
- इसके पास दूसरे modifiers की तुलना में सबसे बड़ा scope होता है.
Example:- अब इसका उदाहरण देख लेते हैं:-
package myPackage;
public class Study
{
public void show ()
{
System.out.println ("this is study related website");
}
}
package yourPackage;
import myPackage. *;
class Test
{
public static void main (String args [])
{
Study obj = new Study;
obj.show ();
}
}
इसका आउटपुट:- this is study related website
याद रखने के लिए कुछ बिंदु:-
- अगर कोई दूसरा programmer हमारी class का प्रयोग करता है तो हमें सबसे ज्यादा restrictive access level का प्रयोग करना चाहिए, हमें ज्यादातर private का use करना चाहिए, (किसी विशेष परिस्थिति को छोडकर).
- हमें public fields को avoid करना चाहिए.
एक्सेस मॉडिफायर का scope नीचे के चित्र में दिया गया है:-
method overriding के साथ access modifiers
अगर आप किसी method को override कर रहे हैं तो overridden method जयादा restrictive नहीं होनी चाहिए.
class First{
protected void msg(){System.out.println("how are you");}
}
public class Second extends First{
void msg(){
System.out.println("how are you");
}
public static void main(String args[]){
Second obj=new Second();
obj.msg();
}
}
ऊपर दिए गये उदाहरण में compile time error आएगा क्योंकि overridden method में हमने default modifier का प्रयोग किया है.
निवेदन:- आपको यह आर्टिकल कैसा लगा मुझे नीचे कमेंट के द्वारा जरुर बताइए और इसे अपने classmates और friends के साथ जरुर share कीजिये. जिससे कि उनकी भी help हो जाएँ. thanks.