Thu. Apr 25th, 2024
    visibility mode in java in hindi

    विषय-सूचि


    जावा प्रोग्रामिंग में विजिबिलिटी मोड या एक्सेस स्पेसीफायर्स, यह कीवर्ड्स होते हैं, जिनका इस्तेमाल उनकी दृश्यता को सुनिश्चित करने के लिए किया जाता हैं।

    प्रोग्रामिंग में विजिबिलिटी(दृश्यता) का अर्थ होता हैं, की यह निश्चित करना की कौनसा क्लास/फंक्शन उस क्लास/फंक्शन को एक्सेस कर सकता हैं।

    विजिबिलिटी मोड्स, चूँकि एक्सेस को डिफाइन करते हैं, इसीलिए उन्हें एक्सेस स्पेसिफायर्स कहा जाता हैं। विजिबिलिटी मोड्स का इस्तेमाल एक्सेसींग फंक्शन का स्कोप और बाउंड्री को परिभाषित करने के लिए किया जाता हैं।

    एक्सेस स्पेसीफायर्स सिंटेक्स (access specifiers in java in hindi)

    <access specifier> <class-keyword> <class name>

    जावा प्रोग्रामिंग में 4 प्रकार के एक्सेस स्पेसीफायर्स हैं-

    1. डिफ़ॉल्ट (Default Access Specifier in Hindi)

    डिफ़ॉल्ट एक्सेस स्पेसिफायर क्लास, वेरिएबल और अन्य को प्रोग्राम के घटकों को तब आबंटित किया जाता हैं, जब प्रोग्रामर द्वारा कोई भी अन्य एक्सेस स्पेसिफायर उस विशिष्ट क्लास या मेथड को असाइन किया नहीं किया गया हों।

    वेरिएबल, फंक्शन को जब बिना किसी एक्सेस स्पेसिफायर के डिक्लेअर किया जाता हैं, तब उस फंक्शन को,  पैकेज में डिक्लेअर किए गए सभी क्लासेज एक्सेस कर सकते हैं।

    उदाहरण-

    String version=”1.5.1”;

    boolean processOrder()

    {

    return true;

    }

    2. प्राइवेट (Private Access Specifier in hindi)

    अगर फंक्शन्स, वेरिएबल्स और कंस्ट्रक्टर को प्राइवेट एक्सेस स्पेसिफायर की मदत से अगर डिक्लेअर किया गया हो। तो, जिस क्लास में इन्हें डिक्लेअर किया गया हो, उसके सिवाय इन्हें एक्सेस नहीं किया जा सकता।

    प्राइवेट एक्सेस स्पेसिफायर का मुख्य उद्देश्य, क्लास में डिक्लेअर किए गए फंक्शन( मेथोड्स) को बाहरी हस्तक्षेप से सुरक्षित रखना यह हैं।

    उदाहरण-

    public class Logger

    {

    private String format;

    public String getFormat()

    {

    return.this.format;

    }

    public void setFormat(String format)

    {

    this.format=format;

    }

    }

    स्पष्टीकरण

    ऊपर दिए गए उदाहरण में क्लास Logger में हमने एक स्ट्रिंग ली हैं, इस स्ट्रिंग format को हमने प्राइवेट डिक्लेअर किया हैं। प्राइवेट डिक्लेअर किए जाने की वजह से इस स्ट्रिंग वेरिएबल को क्लास Logger के बाहर कोई भी क्लास या फंक्शन एक्सेस नहीं कर सकेगा।

    लेकिन, इसी क्लास में हमने दो फंक्शन्स भी डिक्लेअर किए हैं, जिनका विजिबिलिटी मोड पब्लिक हैं। इसका अर्थ हैं की इन दो फंक्शन्स को क्लास के बाहर भी एक्सेस किया जा सकता हैं। पहला फंक्शन स्ट्रिंग format को रिटर्न कर रहा हैं और दूसरा फंक्शन उसे वैल्यू असाइन कर रहा हैं।

    अब जब किसी अन्य क्लास में getFormat() इस फंक्शन को कॉल किया जाएगा तब, वह फंक्शन format की वैल्यू रिटर्न करेगा।

    यहाँ, स्ट्रिंग वेरिएबल format और अन्य दो फंक्शन समान क्लास में डिक्लेअर किए गए हैं, इसके चलते वह फंक्शन स्ट्रिंग वेरिएबल को एक्सेस कर सकते हैं। यह दो फंक्शन्स पब्लिक हैं, तो इन्हें कोई भी क्लास एक्सेस कर सकता हैं।

    3. पब्लिक(Public Access Specifier in hindi)

    जब किसी क्लास, फंक्शन्स, कंस्ट्रक्टर, इंटरफ़ेस इत्यादी, को पब्लिक एक्सेस स्पेसिफायर की मदत से डिक्लेअर किया जाता हैं। तब उन्हे कोई भी क्लास, फंक्शन एक्सेस कर सकता हैं।

    आम तौर पर, एक पैकेज में डिक्लेअर किए गए क्लास में परिभाषित किसी भी पब्लिक मेथड, वेरिएबल को अन्य कोई भी क्लास या उसके फंक्शन्स एक्सेस कर सकते हैं।

    लेकिन अगर किसी पब्लिक फंक्शन को कोई अन्य क्लास एक्सेस करना चाह रहा हैं, जोकि उस पैकेज का हिस्सा नहीं हैं, जिसमें उस पब्लिक फंक्शन को डिक्लेअर किया गया हों।

    उस परिस्थिति में उस फंक्शन को इस्तेमाल अकरने से पहले उस पैकेज को इम्पोर्ट करना जरुरी हैं। पैकेज इम्पोर्ट करने के बाद सभी पब्लिक वेरिएबल्स, फंक्शन्स का उपयोग किया जा सकता हैं।

    इनहेरिटेंस में जब एक क्लास दुसरे क्लास की प्रॉपर्टीज को इन्हेरिट करता हैं, तब सभी पब्लिकली डिक्लेअर्ड फंक्शन्स, वेरिएबल्स भी इन्हेरिट किए जाते हैं।

    4. प्रोटेक्टेड (Protected Access Specifier in hindi)

    जब किसी क्लास, फंक्शन्स, कंस्ट्रक्टर, इंटरफ़ेस इत्यादी, को प्रोटेक्टेड एक्सेस स्पेसिफायर की मदत से डिक्लेअर किया जाता हैं। तब उन्हे सिर्फ डेरिव्हड क्लास एक्सेस कर सकता हैं।

    क्लास और इंटरफ़ेस को डिक्लेअर करते समय पब्लिक, प्राइवेट या डिफ़ॉल्ट इन एक्सेस स्पेसिफायर्स का इस्तेमाल किया जा सकता हैं, लें प्रोटेक्टेड इस एक्सेस स्पेसिफायर का इस्तेमाल नहीं किया जा सकता।

    उदाहरण-

    class Audio

    {

    protected Boolean openSpeaker(speaker sp)

    {

    //implementation details;

    }

    }

    class Stream extends Audio

    {

    boolean opeanSpeaker(Speaker sp)

    {

    //implementation details;

    }

    }

    स्पष्टीकरण-

    ऊपर दिए गए उदाहरण में क्लास AudioPlayer में हमने, एक फंक्शन को प्रोटेक्टेड डिक्लेअर किया गया हैं। इस openSpeaker फंक्शन को अन्य क्लास एक्सेस नहीं कर सकते। इस फंक्शन को सिर्फ इस क्लास का डेरिव्हड क्लास ही एक्सेस कर सकता हैं।

    अगर हमने इस फंक्शन को पब्लिक डिक्लेअर किया होता तो इसे कोई भी क्लास या फंक्शन एक्सेस कर पाता।

    एक्सेस स्पेसिफायर्स और इनहेरिटेंस के बीच सम्बन्ध (Relation between Access Specifiers and Inheritance in Hindi)

    • बेस क्लास में पब्लिक डिक्लेअर किए गए फंक्शन्स, वेरिएबल्स इत्यादि डेरिव्हड क्लास में भी पब्लिक हो होते हैं। इसका मतलब इनहेरिटेंस का उनके एक्सेस स्पेसिफायर पर कोई भी असर नहीं होता।
    • बेस क्लास में प्रोटेक्टेड डिक्लेअर किए आगे फंक्शन जब डेरिव्हड क्लास में इन्हेरिट किए जाते हैं, जब वे प्रोटेक्टेड होते हैं या फिर प्राइवेट होते हैं। लेकिन वे प्राइवेट नहीं हो सकते।
    • प्राइवेट कीवर्ड की मदत से डिक्लेअर किए गए फंक्शन्स, वेरिएबल्स को इन्हेरिट नहीं किया जा सकता।

    इस लेख से सम्बंधित यदि आपका कोई भी सवाल या सुझाव है, तो आप उसे नीचे कमेंट में लिख सकते हैं।

    By प्रशांत पंद्री

    प्रशांत, पुणे विश्वविद्यालय में बीबीए(कंप्यूटर एप्लीकेशन्स) के तृतीय वर्ष के छात्र हैं। वे अन्तर्राष्ट्रीय राजनीती, रक्षा और प्रोग्रामिंग लैंग्वेजेज में रूचि रखते हैं।

    Leave a Reply

    Your email address will not be published. Required fields are marked *