C# Access Specifiers
सी शार्प एक ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग लैंग्वेज है जिसके अंतर्गत विभिन्न प्रकार के टाइप्स जैसे क्लास स्ट्रक्ट, इंटरफ़ेस, इनम, स्ट्रिंग, ऐरे, कलेक्शन इत्यादि हैं। इन अलग अलग टाइप की एक्सेसिबिलिटी या विजिबिलिटी होती है जो निर्धारित करती है कि एक टाइप को प्रोजेक्ट के भीतर या प्रोजेक्ट के बाहर यूज किया जा सकता है या नहीं। किसी भी टाइप के भीतर विभिन्न प्रकार के मेंबर होते हैं जैसे क्लास टाइप के भीतर प्रॉपर्टी, मेथड, कंस्ट्रक्टर, इंडक्शर, फील्ड, इत्यादि अलग-अलग क्लास मेंबर होते हैं जिनके लिए भी विजिबिलिटी या एक्सेसिबिलिटी निर्धारित होती है।
एक्सेसिबिलिटी निर्धारित करने के लिए सी शार्प लैंगुएज में कई सारे modifier हैं जैसे public, private, protected, internal, protected internal जिनकी मदद से किसी टाइप अथवा उसके मेंबर्स की एक्सेसिबिलिटी निर्धारित की जाती है।
क्लास के लिए केवल दो Access Modifiers, internal और public हैं।
क्लास की विज़िबिलिटी से तात्पर्य यह है कि कोई क्लास अपने प्रोजेक्ट या प्रोजेक्ट के बाहर के दूसरे प्रोजेक्ट में विज़िबल है अथवा नहीं है। क्लास के विजिबिलिटी को क्लास के Modifier द्वारा तय किया जाता है। किसी भी C# क्लास के दो Modifiers संभव है पहला इंटरनल और दूसरा पब्लिक। नियत रूप से, C# क्लास इंटरनल होता है। इंटरनल क्लास से अभिप्राय यह है कि यह क्लास पूरे प्रोजेक्ट के भीतर विजिबल होगा। अपने प्रोजेक्ट के अलावा किसी भी दूसरे प्रोजेक्ट में यह क्लास इनविजिबल होगा।
याद रखें कि सी शार्प प्रोग्रामिंग के अंतर्गत क्लास की दो तरह के एक्सेसिबिलिटी सम्भव है। वह इंटरनल और पब्लिक है। नियत रूप से क्लास की एक्सेसिबिलिटी internal होती है। इसके अलावा अन्य प्रकार की एक्सेसिबिलिटी यथा private, protected क्लास के लिए संभव नहीं है।
पब्लिक क्लास से अभिप्राय यह है कि यह क्लास न केवल पूरे प्रोजेक्ट के भीतर विजिबल होगा, अपितु अपने प्रोजेक्ट के अलावा किसी भी दूसरे प्रोजेक्ट में भी यह क्लास विजिबल होगा। अर्थात दूसरे प्रोजेक्ट के अन्दर भी इस क्लास को कन्ज्यूम किया जा सकता है।
क्लास की विज़िबिलिटी और युजेबिलिटी आपस में सम्बंधित है। अगर कोई क्लास किसी प्रोजेक्ट के दूसरे क्लास के द्वारा एक्सेसिबल है तो उस क्लास को यूज किया जा सकता है।
इंटरनल क्लास को प्रोजेक्ट के भीतर के किसी भी दूसरे क्लास के द्वारा कंज्यूम किया जा सकता है लेकिन एक बात ध्यान देने वाली है कि अगर उस क्लास का कंस्ट्रक्टर प्राइवेट है तो उस क्लास को दूसरे क्लास के द्वारा कंज्यूम नहीं किया जा सकता है। इसका कारण यह है कि अगर क्लास का कंस्ट्रक्टर प्राइवेट कंस्ट्रक्टर है तो ऐसी हालत में उस क्लास का कोई भी ऑब्जेक्ट दूसरे क्लास के द्वारा नहीं बनाया जा सकता है। ऐसी हालत में क्लास इंटरनल होने के बावजूद दूसरे क्लास के द्वारा कंज्यूम नहीं किया जा सकता है।
क्लास के मेम्बर फ़नक्स या मेथड की एक्सेसिबिलिटी:-
किसी क्लास के मेंबर फंक्शन या मेथड को पांच प्रकार की एक्सेसिबिलिटी सी शार्प लैंग्वेज अंतर्गत दी जा सकती है वे इस प्रकार है
१) public
२) private
३) protected
४) internal
५) protected internal
पब्लिक मेथड यदि किसी क्लास के मेंबर फंक्शन या मेथड की एक्सेसिबिलिटी public हो तो उस मेथड को किसी भी दूसरे क्लास के द्वारा एक्सेस किया जा सकता है। दूसरा क्लास किसी भी प्रोजेक्ट के भीतर स्थित हो सकता है।
प्राइवेट मेथड यदि किसी क्लास के मेंबर फंक्शन या मेथड की एक्सेसिबिलिटी private हो तो उस मेथड को केवल उसी क्लास के द्वारा एक्सेस किया जा सकता है जिस क्लास के भीतर यह मेथड डिफाइन किया गया है। दूसरे शब्दों में जिस क्लास का मेथड है वही क्लास उस मेथड को कंज्यूम कर सकता है। सी शार्प के अंतर्गत नियत रूप से मेथड private होता है। दूसरे शब्दों में, यदि मेथड का एक्सेस modifier नहीं दिया गया हो तो वह private होता है।
प्रोटेक्टेड मेथड यदि किसी क्लास के मेंबर फंक्शन या मेथड की एक्सेसिबिलिटी protected हो तो उस मेथड को न केवल उसी क्लास के द्वारा एक्सेस किया जा सकता है जिस क्लास के भीतर यह मेथड डिफाइन किया गया है बल्कि उस क्लास के सभी चाइल्ड क्लास के द्वारा भी वह मेथड कन्ज्यूम किया जा सकता है। दूसरे शब्दों में, जिस क्लास का मेथड है वही क्लास और उसके चाइल्ड क्लासेज ही उस मेथड को कंज्यूम कर सकते है। इन्हेरिटेंस की प्रॉपर्टी के कारण चाइल्ड क्लास अपने पैरंट क्लास के उन सभी मेथड्स को एक्सेस कर सकता है जो प्राइवेट नहीं है।
इंटरनल मेथड यदि किसी क्लास के मेंबर फंक्शन या मेथड की एक्सेसिबिलिटी internal हो तो उस मेथड को किसी भी दूसरे क्लास के द्वारा एक्सेस किया जा सकता है जो मेथड के वर्तमान क्लास के प्रोजेक्ट या dll के अंतर्गत आते हैं। दूसरा क्लास वर्तमान प्रोजेक्ट के भीतर ही स्थित हो सकता है। इंटरनल का शाब्दिक अर्थ आंतरिक होता है। दूसरे शब्दों में, अगर कोई मेथड इंटरनल है तो वह उस प्रोजेक्ट के अंदर ही यूज किया जा सकता है जिस प्रोजेक्ट के भीतर यह मेथड स्थित है। इंटरनल मेथड के प्रोजेक्ट के बाहर के किसी प्रोजेक्ट में इंटरनल मेथड इनविजिबल होगा।
प्रोटेक्टेड इंटरनल मेथड यदि किसी क्लास के मेंबर फंक्शन या मेथड की एक्सेसिबिलिटी protected internal हो तो उस मेथड में internal या protected मेथड की खूबियां एक साथ आ जाती हैं। आंतरिक प्रोजेक्ट के भीतर यह एक internal मेथड की तरह कार्य करता है जबकि बाहरी प्रोजेक्ट के भीतर यह एक protected मेथड की तरह व्यवहार करता है। अतः मेथड के आंतरिक प्रोजेक्ट के किसी भी क्लास के द्वारा यह एक्सेसिबल होता है। इसके अलावा प्रोजेक्ट के बाहर यह मेथड, प्रोटेक्टेड मेथड की तरह कार्य करता है और बाहरी प्रोजेक्ट के अंतर्गत मेथड के क्लास और चाइल्ड क्लास के द्वारा एक्सेस किया जा सकता है।
तिथि: अष्टमी १३ अक्टूबर २०२१
© अजीत कुमार, सर्वाधिकार सुरक्षित।
इस आलेख को उद्धृत करते हुए इस लेख के लिंक का भी विवरण दें। इस आलेख को कॉपीराइट सूचना के साथ यथावत साझा करने की अनुमति है। कृपया इसे ऐसे स्थान पर साझा न करें जहाँ इसे देखने के लिए शुल्क देना पडे।
No comments:
Post a Comment